python爬虫升级之路python学习笔记Python程序员联盟

Python爬取58同城平板电脑频道产品信息

2017-01-01  本文已影响94人  rmbnet

爬取58同城平板电脑频道所有产品信息

效果是这样的:

个人分类产品信息 商家分析产品信息

我的代码:

from bs4 import BeautifulSoup
import requestsimport time
import time
def get_cate_lists(): 
   for num1 in range(0, 2):####0:个人 1:商家
        for num2 in range(1, 11):##页码,爬取前10页信息
            url_cates = ['http://bj.58.com/pbdn/{}/pn{}/'.format(num1, num2)][0]
            get_link_from(url_cates)
def get_link_from(url):
    web_data=requests.get(url)
    soup=BeautifulSoup(web_data.text,'lxml')
    links_list=soup.select('a[class="t"]')
    for link in links_list: 
       href=link.get('href').split('?')[0]
       get_detail_info(href)
def get_views(url):
    id=url.split('/')[-1].strip('x.shtml')
    new_url='http://jst1.58.com/counter?infoid={}'.format(id)
    headers={'Referer':url}
    web_data=requests.get(new_url,headers=headers)
    views=web_data.text.split('=')[-1]
    #print(views)
    return views
def get_detail_info(url):
    time.sleep(1)
    web_data=requests.get(url)
    soup=BeautifulSoup(web_data.text,'lxml')
    if url[-7]=='x':##过滤商家URLhttp://bj.58.com/pingbandiannao/28519635853996x.shtml 商家
        info={
            'title':soup.select('div.col_sub.mainTitle > h1')[0].get_text(), 
            'area':list(soup.select('span.c_25d')[0].stripped_strings) if soup.find_all('span','c_25d') else None, 
            'price':soup.select('span.price.c_f50')[0].text,
            'cate':'商家',
            'view':int(get_views(url))
        }
        print(info)
    elif url[-7]=='z':#过滤个人URL http://zhuanzhuan.58.com/detail/744170697423355907z.shtml
        info={
            'title':soup.select('h1.info_titile')[0].get_text(),
            'area':soup.select('div.palce_li > span > i')[0].text,
            'price':int(soup.select('div.price_li > span > i')[0].text),
            'cate':'个人',
            'view':int(soup.select('span.look_time')[0].text.strip('次浏览'))
        }
        print(info)
    else:
        print('过滤促销产品')
if __name__=='__main__':
    get_cate_lists()

总结:

上一篇 下一篇

猜你喜欢

热点阅读