在4S店实习,市场部经理让我写一个小程序自动爬取汽车之家网站上自家品牌的促销文章,因为区域经理需要各店上报在网站上每一家经销商文章的露出频率,于是就自己尝试写一个爬虫,正好当入门了。
一、自动爬取并输出促销信息与经销商信息到CSV表格
(1)配置环境
电脑上已经安装了Anaconda3 4.2.0,集成了python3.5.2,以及pandas、numpy等数据处理与科学计算模块。
在命令行中用 pip install 安装bs4
如
pip install bs4
(2)思路
http://www.autohome.com.cn/chengdu/cheshi/
对象是上面这个网站,打开后可以看到有不同品牌的促销文章,进入其中一个链接,http://www.autohome.com.cn/dealer/201706/118192201.html
翻到最底下,可以看到“商家名称”一栏后有对应的商家名称“四川知行荣业汽车销售服务有限公司”,要找的就是它。
每一个促销信息的网页结构都是一致的。这就有规律可寻。
在Firefox浏览器中,对应区域——右键——查看元素,定位到某个标题的位置
在下方的查看器中,根据结构找到这个促销信息区域的结构。
能够看到是<div class="news_area">的标签。根据这个标签,就能够定位到相应的文本内容中。
采用了BeautifulSoup库,是一个可以从HTML或XML文件中提取数据的Python库。具体文档介绍:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
在导入对应的库后,首先发送网页请求并解析
html = urllib.request.urlopen("http://www.autohome.com.cn/chengdu/cheshi/") #发送打开网页请求
soup = BeautifulSoup(html, "lxml") #解析网页
根据标签的结构,定位到相应促销区域:
先上这部分代码:
for i in soup.body.find_all("div",attrs={"class":"news_area"}): #定位到优惠促销区域
k=0 #k用于统计促销信息数量
df = pd.DataFrame(np.empty((len(i.find_all('a&#