汽车之家各种车型参数爬虫
结果如下:
本案例使用jupyter notebook,用到requests,BeautifulSoup,lxml,urlencode ,pandas五个库,爬取下来的数据如下图所示:
详细过程:
整个过程分成三个部分:
1,爬取汽车之家各个品牌(譬如奥迪)汽车对应的链接
2,爬取每一个品牌下各个汽车系列(譬如奥迪A3)的链接
3,使用2得到的链接爬取每个汽车系列的参数(譬如奥迪A3的发动机,价格,变速箱,颜色,用户评分等等)
先引入所需要的库,其中最后一个库的作用是将我们后面要用到的parms参数转化为字符串形式,代码如下:
import requests#request包
from bs4 import BeautifulSoup
import pandas as pd#pandas库用来储存结果
import lxml
from urllib.parse import urlencode
1,爬取汽车之家各个品牌(譬如奥迪)汽车对应的链接。
如图所示,我们要的是这一部分内容,那这一部分的内容怎么得到呢?
右键——检查——network——然后刷新浏览器,服务器会返回很多个包,下图所示的这个包即为我们想用的
它的页面如下图所示,然后我们直接复制它的链接即可进行爬取,链接如下: https://car.autohome.com.cn/AsLeftMenu/As_LeftListNew.ashx?typeId=1%20&brandId=0%20&fctId=0%20&seriesId=0.
编写爬虫方法:
def getLongPage():
url = 'https://car.autohome.com.cn/AsLeftMenu/As_LeftListNew.ashx?typeId=1%20&brandId=0%20&fctId=0%20&seriesId=0'
headers = {
'Referer': 'https://car.autohome.com.cn/',
'Sec-Fetch-Mode': 'no-cors',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
try:
r = requests.get(url ,headers = headers)
if r.status_code == 200:
r.encoding = r.apparent_encoding#此处将编码改成网页的编码样式,防止出现乱码
soup = BeautifulSoup(r.text, "lxml")
return soup
except:
print("爬取失败!"