Python爬虫实例三

实例要求:
爬取58同城10页的商品链接,以及链接网页的商品详细信息,如下图:
这里写图片描述

这里写图片描述

存在的问题:
1.如图:
这里写图片描述

categories = soup.select('span.crb_i > a')
list(categories[2].stripped_strings)

2.有的有原价,有的无,即某一个标签不一定总是存在,所以需要判断:
这里写图片描述
这里写图片描述

list(primecosts[0].stripped_strings) if soup.find_all('b','price_ori') else None

爬虫代码:

from bs4 import BeautifulSoup
import requests
import time

urls = ['http://bj.58.com/pbdn/0/pn{}/'.format(str(i)) for i in range(1, 10, 1)]
def getUrlList(url):
    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text)
    goodsurls = soup.select('tr.zzinfo > td.t > a')
    for goodsurl in goodsurls:
        data = {
            'goodsurl':goodsurl.get('href')
        }
        getInfo(data.get('goodsurl'))
    time.sleep(2)

def getInfo(goodsurl):
    wb_data = requests.get(goodsurl)
    soup = BeautifulSoup(wb_data.text)
    categories = soup.select('span.crb_i > a')
    titles = soup.select('h1.info_titile')
    currentprices = soup.select('span.price_now > i')
    primecosts = soup.select('b.price_ori')
    regions = soup.select('div.palce_li > span > i')
    scannumbers = soup.select('span.look_time')
    for categorytem, title, currentprice, region, scannumber in zip(categories, titles, currentprices, regions, scannumbers):
        data = {
            '类目':list(categories[2].stripped_strings),
            '标题':title.get_text(),
            '现价':currentprice.get_text(),
            '原价':list(primecosts[0].stripped_strings) if soup.find_all('b','price_ori') else None,
            '区域':region.get_text(),
            '浏览人数':scannumber.get_text()
        }
        print(data)

for url in urls:
    getUrlList(url)

爬取结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值