2016-05-01 8 views
0

助けることができます。いくつかの問題があなたたちは、私は数日前のpythonクローラについて学んだし、私が問題に会ったし、私はそれを解決する方法がわからない、いくつかのpractice.Butをした私

from bs4 import BeautifulSoup 
import requests 
import time 


def crawler(url, data=None): 
    wb_data = requests.get(url) 
    time.sleep(2) 
    soup = BeautifulSoup(wb_data.text, 'lxml') 
    headers = soup.select('div.pho_info > h4 > em') 
    addresses = soup.select('div.pho_info > p > span.pr5') 
    prices = soup.select('#pricePart > div.day_l > span') 
    images1 = soup.select('#curBigImage') 
    images2 = soup.select('div.member_pic > a > img') 
    names = soup.select('div.w_240 > h6 > a') 
    genders = soup.select('div.member_pic > div') 

    def crawl_gender(a): 
     if a == 'member_ico1': 
      return 'man' 
     elif a == 'member_ico': 
      return 'woman' 
    if data == None: 
     for header, address, price, image1, image2, name, gender in zip(headers, addresses, prices, images1, images2, names, genders): 
     data = { 
      'header': header.get('header'), 
      'address': address.get('adderss'), 
      'price': price.get('price'), 
      'image1': image1.get('image1'), 
      'image2': images2.get('src'), 
      'name': name.get('name'), 
      'gender': crawl_gender(genders) 
     } 
      print(data) 

crawler('http://bj.xiaozhu.com/fangzi/1115060277.html') 

と、次の何のコンパイラ戻っている:それはあなたがあなたのimages2変数に1以上の画像を持っていることを意味し

Traceback (most recent call last): 
    File "/Users/duanshulan/PycharmProjects/untitled1/Crawler.py", line 36, in <module> 
    crawler('http://bj.xiaozhu.com/fangzi/1115060277.html') 
    File "/Users/duanshulan/PycharmProjects/untitled1/Crawler.py", line 30, in crawler 
    'image2': images2.get('src'), 
    AttributeError: 'list' object has no attribute 'get' 
+1

あなたは 'image2'(ない' images2')を意味しましたか? – BrenBarn

答えて

0

。試してください:

'image2': images2[0].get('src'), 

最初のものにのみアクセスしてください。