利用python的模块requests来爬取百度搜索出来的url
使用环境为python3
#!/use/bin/env python # -*- coding:utf-8 -*- import requests import re key_word = '编程语言' #搜索关键字 # 百度的一个简单搜索url url = 'https://www.baidu.com/s?&rsv_spt=1&rsv_iqid=0xde1c4732000302f0&issp=1&f=8&rsv_bp=0&
rsv_idx=2&ie=utf-8&tn=sitehao123_15&rsv_enter=1&rsv_sug3=12&rsv_sug1=12&rsv_sug7=100&
sug=%25E7%25BC%2596%25E7%25A8%258B%25E5%2585%25A5%25E9%2597%25A8&rsv_n=1' # 设置客户端的浏览器型号 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/66.0.3359.117 Safari/537.36' } with open('%s.txt' % key_word, 'w') as f: # 打开一个文件写入 for i in range(3): data = { # 给出一个参数 用于给url传递参数 例如: http://www.baidu.com?wd=key_word&pn=10 'wd': key_word, 'pn': i*10 } response = requests.get(url, headers=headers, params=data) #使用requests模块传递3个参数 url,headers,params html = response.text # 下载好的 html代码
# 使用正则表达式过滤出需要的url urls = re.findall(r'<div class="result c-container ".*?"(http://www.baidu.com/link?url=.*?)".*?</div>', html, re.S) real_urls = [] # 设置一个空数列 for u in urls: res = requests.get(u, headers=headers) #过滤出需要的url real_urls.append(res.url) #将结果放进空列表 for item in real_urls: #循环写入到文件 f.write(item) f.write(' ')