62

Python实战 | 只需 ”三步“ 爬取二手iphone信息(转发送源码)

 5 years ago
source link: http://www.10tiao.com/html/314/201807/2672941309/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

又是一个周六,

祝大家一天好心情!

本次实战是爬取二手苹果手机的信息,共爬取了300部手机信息,效果如下:



 

开发环境


环境:MAC + Python3.6

IDE:Pycharm

模块:import requests、from bs4 import BeautifulSoup


爬取目标


本次爬取目标是58同城二手iphone手机信息,如下图所示。这些信息主要包括标题,价钱,区域,信息所属分类。


爬取分析

本次需要爬取300个二手手机信息,但是58网站的每一页信息只有30套,如下。因此我们需要爬取10个网页的信息,


也就是爬取多个页面。通过观察,我们发现第二个网址是http://bj.58.com/iphonesj/pn2/,第三个是http://bj.58.com/iphonesj/pn1/,因此得出网址的规律是pn的页面以此加1

根据上面的分析,我们只需使用一个for循环就可以得到10个页面的信息,具体代码如下:


`python`
 '''
 def get_url():
    '''
    明确任务:获取所有页面的URL,共10个页面
    :return:
    '''
    #get_more_itmes("http://bj.58.com/iphonesj/")
    #生成10个页面的链接
    urls = ("http://bj.58.com/iphonesj/pn{}".format(page) for page in range(1,10))
    #为每一个页面爬取信息
    for url in urls:
      get_more_itmes(url)



爬取一个页面


解析静态网页信息三步即可完成:


第一步

使用requests库中的get方法解析页面,但是为了防止被反爬虫,建议使用headers进行模拟浏览器。否则你会得到下面的信息.

第一步代码如下:

`python`
    #第一步:使用GET获取页面请求
    #获取页面信息
    headers = {
        'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
    }
    data_url = requests.get(url,headers=headers)



第二步

是进行页面解析,找到需要的信息。本次使用的是BeautifulSoup库。Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序,具体代码如下

`python`
    #第二步:开始解析页面
    soup =BeautifulSoup(data_url.text,'lxml')

    #print(soup)


第三步

使用selector进行解析页面,找到二手苹果手机信息的详细页面。selector 定位需要的信息数据,具体方法是鼠标放在图片上,右键,检查,copy-CSS SELECTOR。浏览器自动copy出来css样式,具体代码如下

#根据标签,使用select定位标签位置
hrefs_list = soup.select('a.t')
for href in hrefs_list:
#print(href.get('href'))
   link = href.get('href')
#去除DUMP的无效链接
   if 'zhuanzhuan' in link:
#iprint(link)

爬取目标页面信息

由于详细的房租信息也是一个新的页面,所以需要进行再次的重复上面的三步,具体代码如下。技术难点就是第三步中的,定位标签的唯一性。

`python`
 '''
   data_html = requests.get(url)
    #print(data_html.text)
    #解析页面
    data_soup = BeautifulSoup(data_html.text,'lxml')

    #根据选择器选择想要的信息
    #通过简单的小范围"唯一定位"方法查找信息
    #使用 CONTRL+F 查找是不是唯一的 h1.info_titile
    #title_list = data_soup.select('h1.info_titile')
    titles = data_soup.select('h1.info_titile')
    title = titles[0].text

    #span.price_now > i
    prices = data_soup.select('span.price_now > i')
    price = prices[0].text

    #
    areas = data_soup.select('div.palce_li > span > i')
    area = areas[0].text

    #切片-1 代表最后一个
    class_itmes = data_soup.select('span.crb_i > a')
    class_item = class_itmes[-1].text.strip()

    #span.look_time
    number_views = data_soup.select('span.look_time')
    number_view = number_views[0].text


到此,整个二手苹果手机的信息爬虫完成,完美的爬出来想要的信息,是不是很简单,然后试一下吧。重点提醒:换一个其他网址也同样适用哦。

下周六见..........

长按二维码,关注人工智能与大数据生活

转发此文到朋友圈,截图到扫码后的公众号(人工智能与大数据生活)

获得本文源代码



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK