有的时候爬取网页,可以利用网站额结构特点爬取网页
在百度搜索框中输入搜索内容,单击搜索,浏览器会发送一个带有参数的url请求。尝试删除其中的一些参数,只剩下wd这个参数。发现wd是搜索内容。这样程序可以根据不同的wd值,请求不同的网页。
1 from urllib import request,parse 2 ?3 # 构造请求对象 4 def baidu(wd): 5 ????# 爬取的网页 6 ????base_url = ‘http://www.baidu.com/s?‘ 7 ?8 ????qs = { 9 ????????‘wd‘ : wd10 ????}11 12 ????# 进行url编码13 ????qs = parse.urlencode(qs) # wd=hello14 15 ????# 构造请求对象16 ????req = request.Request(base_url + qs)17 18 ????# 发送请求19 ????response = request.urlopen(req)20 21 ????# 获取网页内容22 ????html = response.read().decode(‘utf-8‘)23 24 ????#打印网页25 ????print(html)26 27 28 if __name__ == "__main__":29 ????while True:30 ????????wd=input(‘请输入要搜索的内容:‘)31 ????????if wd == ‘q‘: #输入 q 退出32 ????????????break33 ????????baidu(wd) #下载网页
浏览器中发送请求的url中包含汉字是不能请求成功的,需要将汉字进行url编码。(可以在“站长工具”中在线编码解码)。
这里使用parse.urlencode()进行url编码。将编码之后的内容与原url进行拼接,形成完整的url。
urllib基础-利用网站结构爬取网页-百度搜索
原文地址:https://www.cnblogs.com/doitjust/p/9220762.html