使用requests和re库爬取淘宝商品价格信息
前言
首先本次代码的大部分框架基于北京理工大学嵩天老师的mooc爬虫教程。感谢嵩老师的教育。相信很多人看了关于淘宝书包案例的视频后自己尝试,却发现只能出现表头,而不能生成完整的商品价格信息,如下图所示。
一、问题分析
这是因为当年嵩天老师录制视频的时候淘宝还没有反爬机制,不过等我弄得时候已经2019年了。淘宝有了反爬机制,所以你的程序是对的没有报错,但是却爬取不到任何信息。那么如何解决呢?
首先认真听课的肯定知道老师之前降了亚马逊网站的案例,案例中更改了user-agent,此次就派上用场了。
二、什么是user-agent
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
常常要用server抓资料时,都会碰到直接使用wget和curl被服务器拒绝的状况。通常简单加个user-agent伪装一下就会过了。
三、怎么获取user-agent
下面以火狐浏览器为例,打开浏览器,按键盘F12,即可进入开发者模式,左上角点击网络,如果左边的下部分没有我那么多内容,刷新一下网页就好了。然后注意右下角就有user-agent。此外还有很多方法,大家有兴趣可以去查阅,本次不在列举(毕竟重点不是这个)。
然后我们就可以去编写代码,部分代码如下图:
运行后还是不行。后来经过我到处求教,光改user-agent是不够的,淘宝反爬机制比较厉害,我们还需要改一下cookie。那么怎么查找我们所需要的cookie呢,也是在网页点击F12,然后切换到网路,这时候注意,左下部分需要选择如图所示的项目,右边标记处就是我们要的cookie。
这下彻底解决了。下面给出全部代码。如果帮助到了您, 麻烦给个点赞呀,谢谢了,第一次写文章,好激动!
ps(小技巧):cookie的链接一般都比较长,用idle编写的小伙伴肯定很苦恼不会自动换行。python中可以用"\"来跨行输入。
四、全代码
#CrowTaobaoPrice.py
import requests
import re
def getHTMLText(url):
kv = {
'cookie':'miid=1383361561635576948; cna=1o2kFQMptWsCAXWIHsT75Bd1; isg=BJmZtn30IPAgi_ymuz_P0izHq\
4WzjqaCjeTFD7tOgkA_wrpUAnO0qDuUxEYR4SUQ; l=dBL6AraIqIK-oNKFBOfNNuIRXxbt0IRV1kPzw4ZCCICP_UfH5XXNWZLt-BLM\
Cn1VnsOyJ35u5_4JB88kQyIqJxpsw3k_J_bt3dYh.; tracknick=%5Cu989C%5Cu747E%5Cu989C%5Cu747E%5Cu989C%5Cu747E; _c\
c_=VT5L2FSpdA%3D%3D; tg=0; thw=cn; enc=T4o04NSzBwfk7Hr%2FrvgeuUQ5Fb6K5fraC3HXVolovZQcyx2aVXWKSSZEPAjm64EH9I\
%2B5waaYuiKCqFbV0Hq2QA