输入关键字 抓取所有网页( 模块安装(1)运行结果及解决方法介绍)
优采云 发布时间: 2021-12-26 01:12输入关键字 抓取所有网页(
模块安装(1)运行结果及解决方法介绍)
Python使用requests抓取页面源码(基础)
Requests 模块是一个用于网络访问的模块。
由于使用的requests库是第三方库,需要提前安装
1.1 安装请求
(1)使用cmd安装,首先确保Python已经下载到电脑上,然后启动cmd控制台,输入pip install requests,等待下载完成
(2)使用pycharm安装,在pycharm终端输入pip install requests命令安装request
按 Enter 并等待安装完成
1.2网页请求方式
了解网络请求方法
一般来说,我们使用的HTTP协议或者HTTPS协议,最常用的请求方式是GET和POST
2.使用2.1抓取搜索关键词页面数据
以搜狗搜索周杰伦为例
在搜狗搜索引擎中输入“周杰伦”后,得到的网址如下
邓子琪&_asf=&_ast=&w=01015002&p=40040108&ie=utf8&from=index-nologin&s_from=index&oq=&ri=0&sourceid=sugg&suguuid=&sut=0&sst0=75&lkt=0%2C05times3&lkt=0%4s6time%4uvs
我们只保留“邓紫棋”的地址(这个地址也可以完成请求命令)
import requests #首先导入requests
url = "https://www.sogou.com/web?query=邓紫棋"
resp = requests.get(url) #由抓包工具可知使用get方法请求
print(resp)
resp.close()
操作的结果是
从结果可以看出我们的请求命令成功,服务器响应
然后我们将响应内容输出
可以选择不同的输出内容,这里我们选择文本查看源码
2.2 拦截处理
然后我们查看了源码,发现我们的请求被拦截了。原因可能是服务器认为我们的请求是通过自动化程序而不是普通浏览器发送的。
为了解决这个问题,我们可以做个小伪装,用浏览器打开我们请求的页面的抓包工具的网络,刷新页面,选择其中一个目标找到User-Agent
headers = { #准备一个headers
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.47"
}
resp = requests.get(url,headers = headers)#将得到的User-Agent赋给headers来进行伪装
再次运行爬取,我们将得到页面的源代码
2.3 改进(实现用户独立查询+将源代码写入文件)
#实现用户输入想要搜索的人物或者关键字,并进行抓取
import requests
quary = input("输入一个你喜欢的明星")
url = f"https://www.sogou.com/web?query={quary}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.47"
}
resp = requests.get(url,headers = headers)
with open("result.txt", mode="w",encoding="UTF-8") as f: #将源代码写入文件,将编码格式改为UTF-8
f.write(resp.text)
f.close()
resp.close() #记得关闭
这样我们就完成了使用requests库抓取网页的源码(有了源码,我们可以得到更多我们想要的数据,这也是数据抓取的第一步)