urllib基础-利用网站结构爬取网页-百度搜索

  有的时候爬取网页,可以利用网站额结构特点爬取网页

  在百度搜索框中输入搜索内容,单击搜索,浏览器会发送一个带有参数的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' : wd
10     }
11 
12     # 进行url编码
13     qs = parse.urlencode(qs) # wd=hello
14 
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             break
33         baidu(wd) #下载网页

浏览器中发送请求的url中包含汉字是不能请求成功的,需要将汉字进行url编码。(可以在“站长工具”中在线编码解码)。

这里使用parse.urlencode()进行url编码。将编码之后的内容与原url进行拼接,形成完整的url。

猜你喜欢

转载自www.cnblogs.com/doitjust/p/9220762.html