网页基础
html structure
CSS presentation
JavaScript action
静态网页爬虫
获得response对象后先将其转换成便于操作的BeautifulSoup对象,对BeautifulSoup对象有两种方法可供选择:
-
find()和find_all()
这两个方法返回的结果是Tag对象或由Tag对象组成的列表。对于Tag对象,它和BeautifulSoup对象一样均可以使用find()和find_all()方法,对于由Tag对象组成的列表,可以使用循环依次提取Tag对象。 -
select()
可以直接提取出想要的数据,但是其语法需要注意:.是class,#是id;并列属性直接写,下面的所有层级用空格,下面第一层级用>和空格。
tag对象的方法
#获取元素内容
tag.text
#获取元素属性值
tag['属性名']
动态网页爬虫
XHR
为了提升网页加载速度,许多网页采取先加载框架再加载内容的方式。所以要在不刷新网页的前提下加载更多内容,必须通过XHR向服务器发送请求,获取数据
response对象转换成json对象
res.json()
#json后面可直接添加列表/字典方法
res.json()['']
查询字符串
params = {
'': ''
}
反反爬虫
常见的反爬虫的手段主要有两种:身份判别和IP限制
对于前者来说,只需要在向服务器请求时加上请求头:
#referer字段只需要在通过API获取数据时添加
headers = {
'user-agent': '',
'referer': ''
}
res = requests.get(url, headers = headers)
对于IP限制,只需要建立IP代理池:
proxies = {
'http': '',
'https': ''
}
res = requests.get(url, proxies = proxies)