(挖坑未填)第一个爬虫小实验尝试用bs4解析百度结果

截至文章发布近期,暂时不推荐使用python311,pip在线安装会出现奇怪的问题,找不到问题源,本地安装库可以使用。

听说Python更新了3.11的版本,据传此版本较3.10版本速度提升10%-60%,据官方称是目前Python最好的版本,于是我就闻讯升级了。在此打个补丁。每次pip换源都要百度,下次跳过百度直接进自己博客,复制粘贴。

1
2
3
4
5
6
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
#单次使用

python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#命令生成配置文件

众所周知,换源也就是在用户目录下生成一个配置文件,于是乎命令生成不比手动创建香吗。

OK,切入正题,这次准备练习的一个小爬虫是,百度搜索的词条(第一页,任意关键字),理论上就是

CSS选择器选择题目,然后搞定URL,然而当我正真实战的时候发现事实并不一样 痛哭。。。

此处出现一个问题,因为要安装库,首先要安装requests,还有bs4,再然后我的解析引擎选取的lxml,问题就出在这,lxml安装上去,各种报错,没有任何突出的指向性。很是头秃。

1
2
pip install lxml
# 运行报错

然后查阅各种博客,得到了一点启示,虽然有人说要去下载安装,确实是一个解决方案,但是我昨天上课在课堂上,一个人在线安装成功了,我就很纳闷为什么我不行。

然后我的解决方案还是下载自己安装,地址是lxml下载

我猜测是它pip拉取的版本不对导致安装不上去,按照道理python3.11就要选取cp311的,然后我就安装成功了,理论上,pip在线拉取和本地安装是一样的道理,没理由本地安装可以,直接install不行。所以我觉得是pip拉取的版本不对,可能没有更新11的版本。

反正本地安装是安装上去了。

回来填坑了,奶奶的,亲们请记住,请给requests的get方法加上headers=head这个参数,不然会读不到参数,所以我无论怎么爬都爬不到数据的原因就是这个,气死了。PS:如果还有问题请尝试登录的cookie或修改head。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import requests
from bs4 import BeautifulSoup


# 获取网页源代码
def fetch_page(url, head):
response = requests.get(url, headers=head)
html = response.content.decode('utf-8')
return html


# 解析网页CSS
def analyse(content):
soup = BeautifulSoup(content, 'lxml')
element = soup.select('#\31 > div > div:nth-child(1) > h3 > a')
print(element)


if __name__ == "__main__":
address = input('请输入要检索的关键字:')
address = 'https://www.baidu.com/s?wd=' + address
header = {
"Cookie": "这里放你的cookie哦!",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
}
page = fetch_page(address, header)
analyse(page)

好的首先这个代码是可以运行的,下一步就是编写analyse函数了,下次再写,鉴于太久没更新了,所以先把之前挖的几个坑上传一下,回头等我考完试,我再回来填大坑。


(挖坑未填)第一个爬虫小实验尝试用bs4解析百度结果
https://steammilk.com/2022/10/28/2022-all/spider-1/
作者
蒸奶泡
发布于
2022年10月28日
更新于
2025年1月8日
许可协议