1. 抓取策略
确定目标:确定抓取哪个网站的哪些页面的哪部分数据。本实例抓取百度首页a标签内容。
分析目标:分析要抓取的url的格式,限定抓取范围。分析要抓取的数据的格式,本实例中就要分析标题和连接这两个数据所在的标签的格式。分析要抓取的页面编码的格式,在网页解析器部分,要指定网页编码,然后才能进行正确的解析。
编写代码:在网页解析器部分,要使用到分析目标得到的结果。
执行爬虫:进行数据抓取。
2. 示例代码
# 使用Python requests,bs4,lxml组件抓取网页内容
# pip3 install requests
# pip3 install bs4
# pip3 install lxml
# 程序运行 python -u ***.py 或 ./***.py
# Author tanjie(John)
# Time 2021-05-23
import requests
import bs4
import lxml.html
# 构造headers
headers = {
"User-Agent":
"Mozilla/5.0 (11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
}
url = 'https://www.baidu.com/'
r = requests.get(url, headers)
#查看响应状态码
status_code = r.status_code
print(status_code)
content = bs4.BeautifulSoup(r.content.decode("utf-8"))
print(content)
# 通过ID查找元素
# element = content.find_all(id='su')
# print(element[0]['value'])
# 通过标签去找
element = content.find_all('a')
print(element)
for a in element:
a_href = a['href']
print(a_href)
# 获取a标签里面的内容以及属性内容
html = requests.get(url).content
selector = lxml.html.fromstring(html)
res = selector.xpath("///a/text()")
res1 = selector.xpath("///a/@href")
for i, s in enumerate(res):
print(res1[i])
print(s)