第一周大作業(yè)-爬取58同城商品信息

運行結(jié)果

運行結(jié)果.png

代碼部分

from bs4 import BeautifulSoup
import requests,urllib.request
import time

headers = {
    'User-Agent' : 'Mozilla / 5.0(Windows NT 10.0;Win64; x64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 51.0.2704.103 Safari / 537.36'
}

urls = ['http://bj.58.com/pbdn/1/pn{}/?PGTID=0d305a36-0000-1b3b-1598-57f0dc305892&ClickID=1'.format(i) for i in range(1,2)]

def get_link(url):
    wb_page = requests.get(url, headers=headers)
    sou = BeautifulSoup(wb_page.text, 'lxml')
    links = sou.select('tr > td.t > a.t')

    wholelinks = []
    for link in links:
        wholelinks.append(link.get('href'))

    for slink in wholelinks:
        analy(slink)

def get_clicks(url):
    id = url.split('/')[-1].split('x')[0]
    address = 'http://jst1.58.com/counter?infoid={}'.format(id)
    js = requests.get(address)
    clicks = js.text.split('=')[-1]
    return clicks

def analy(wblink):
    wb_data = requests.get(wblink, headers=headers)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    cat = soup.select('#header > div.breadCrumb.f12 > span > a')
    cates = [cat[-1]]
    titles = soup.select('#content > div.person_add_top.no_ident_top > div.per_ad_left > div.col_sub.mainTitle > h1')
    times = soup.select('#index_show > ul.mtit_con_left.fl > li.time')
    prices = soup.select(
        '#content > div.person_add_top.no_ident_top > div.per_ad_left > div.col_sub.sumary > ul > li > div.su_con > span.price.c_f50')
    cond = soup.select(
        'div.person_add_top.no_ident_top > div.per_ad_left > div.col_sub.sumary > ul > li > div.su_con > span')
    conditions = [cond[1]]
    places = soup.select(
        'div.person_add_top.no_ident_top > div.per_ad_left > div.col_sub.sumary > ul > li > div.su_con > span > a')

    wholeplace = []
    for place in places:
        wholeplace.append(place.get_text())

    for condition in conditions:
        tet = condition.get_text()
        realcod = tet.split('\t')[1].split('\r')[0]

    for cate, title, tim, price, condition in zip(cates, titles, times, prices, conditions):
        dat = {
            'cate': cate.get_text(),
            'title': title.get_text(),
            'times': tim.get_text(),
            'price': price.get_text(),
            'condition': realcod,
            'place': wholeplace,
            'click':get_clicks(wblink)
        }
        print(dat)

for single_url in urls:
    get_link(single_url)

總結(jié)

  1. 關(guān)于點擊量的爬取還是不行,不知道為什么,用視頻中的JS還是不能爬取。
  2. 有關(guān)爬取的路徑還可以簡化
  3. 有關(guān)地址,有些沒有,有些有一個,有些有兩個,似乎我的處理辦法還可以變簡單一些
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容