【爬虫】-001-使用BeautifulSoup解析网页

2017-12-26  本文已影响188人  9756a8680596

1.使用BeautifulSoup+requests解析网页

1)BeautifulSoup

2)requests

2. 描述要爬取的东西在页面中的路径

3. 从标签中获取需要的信息,并以一定的数据结构存储

4. 例子:抓取链家-杭州二手房部分信息

# 导入相关库 
from bs4 import BeautifulSoup
import time
import requests

url_lianjia = 'https://hz.lianjia.com/ershoufang/'
headers = {#模拟浏览器请求,可以用 cookie模拟登陆状态
    'User-Agent':'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
}
time.sleep(4)  #延时请求

wb_data = requests.get(url_lianjia, headers=headers)  #使用requests向服务器发起get请求,通过header模拟浏览器行为
soup    = BeautifulSoup(wb_data.text, 'lxml')  #将服务器返回的对象使用BeautifulSoup解析,wb_data为response对象,需要文本化
# 确定要抓取的元素位置
titles = soup.select('body > div.content > div.leftContent > ul > li > div.info.clear > div.title > a') #返回值类型为list
imgs = soup.select('body > div.content > div.leftContent > ul > li > a > img')
total_prices = soup.select('body > div.content > div.leftContent > ul > li > div.info.clear > div.priceInfo > div.totalPrice > span')
unit_prices = soup.select('body > div.content > div.leftContent > ul > li > div.info.clear > div.priceInfo > div.unitPrice > span')
tags   = soup.select('body > div.content > div.leftContent > ul > li > div.info.clear > div.tag')
# 数据格式化,最终放到字典中
for title, img, total_price, unit_price, tag in zip(titles, imgs, total_prices, unit_prices, tags):
    data = {
        'title': title.get_text(),
        'img': img.get('src'),
        'total_price': total_price.get_text(),
        'unit_price': unit_price.get_text(),
        'tag': list(tag.stripped_strings)
    }
    print(data)

5. 异步加载数据的抓取


references:
1.Beautiful Soup 4.2.0 文档. https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

上一篇下一篇

猜你喜欢

热点阅读