为了爬取百度搜索页的结果,我进行了多次(一下午)尝试,算是独立完成的第一段代码,总结出以下要点:
1百度搜索页面地址,每页10条,页码=(n-1)*10;
2百度搜索结果的代码,位于h3标签下;
3每条链接的文字部分,是a标签的text部分;
4百度不允许python直接爬,要加伪装头部;
代码如下:
import requests
from bs4 import BeautifulSoup
key_words = '代码'
#页面深度
depth = 2
#伪装浏览器头部
kv = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"}
#获得每页搜索结果
for i in range(depth):
url = 'https://www.baidu.com/s?wd=' + key_words + '&pn=' + str(i * 10)
print(url)
try:
r = requests.get(url, headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
html = r.text
except:
print("Error1")
#获得链接及非属性字符串
soup = BeautifulSoup(html, 'html.parser')
h3 = soup.find_all('h3')
for i in h3:
a = i.a
try:
href = a.attrs['href']
#获取a标签中的文字
print(a.text, '\n', href)
except:
print('Error2')