python使用关键字爬取url

摘要:
//www.baidu.com/s'16return_set=set()1718forpageinrange(pn_max):pn}21headers={22'标签':26'用户':27'接受':29'连接':params=querystring)34print('!

python网路爬虫 --------- 使用百度输入的关键字搜索内容然后爬取搜索内容的url

开发环境:windows7+python3.6.3

开发语言:Python

开发工具:pycharm

第三方软件包:需安装lxml4.0,如果只安装lxml会出错,要需要lxml中的etree

废话不多说,贴上代码:

爬取数据保存以TXT格式保存,等会尝试使用Excel表格跟数据库保存。

python使用关键字爬取url第1张python使用关键字爬取url第2张
 1 import requests,time
 2 from lxml import etree
 3 
 4 
 5 def Redirect(url):
 6     try :
 7         res = requests.get(url,timeout=10)
 8         url = res.url
 9     except Exception as e:
10         print('4',e)
11         time.sleep(1)
12     return url
13 
14 def baidu_search(wd,pn_max,sav_file_name):
15     url = 'http://www.baidu.com/s'
16     return_set = set()
17 
18     for page in range(pn_max):
19         pn = page*10
20         querystring = {'wd':wd,'pn':pn}
21         headers = {
22             'pragma':'no-cache',
23             'accept-encoding': 'gzip,deflate,br',
24             'accept-language' : 'zh-CN,zh;q=0.8',
25             'upgrade-insecure-requests' : '1',
26             'user-agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0",
27             'accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
28             'cache-control': "no-cache",
29             'connection': "keep-alive",
30         }
31 
32         try :
33             response = requests.request('GET',url,headers=headers,params=querystring)
34             print('!!!!!!!!!!!!!!',response.url)
35             selector = etree.HTML(response.text,parser = etree.HTMLParser(encoding='utf-8'))
36         except Exception as e:
37             print('页面加载失败',e)
38             continue
39         with open(sav_file_name,'a+') as f:
40             for i in range(1,10):
41                 try :
42                     context = selector.xpath('//*[@id="'+str(pn+i)+'"]/h3/a[1]/@href')
43                     print(len(context),context[0])
44                     i = Redirect(context[0])
45                     print('context='+context[0])
46                     print ('i='+i)
47                     f.write(i)
48                     f.write('
')
49                     break
50                     return_set.add(i)
51                     f.write('
')
52                 except Exception as e:
53                     print(i,return_set)
54                     print('3',e)
55 
56     return return_set
57 
58 if __name__ == '__main__':
59     wd = '网络贷款'
60     pn = 100
61     save_file_name = 'save_url_soup.txt'
62     return_set = baidu_search(wd,pn,save_file_name)
View Code

免责声明:文章转载自《python使用关键字爬取url》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇原生js和vue之间的数据通讯--EventEmitter蜂鸟E203系列——Linux开发工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

prometheus SQL汇总

  导航:这里主要是列出一个prometheus一些系统的学习过程,最后按照章节顺序查看,由于写作该文档经历了不同时期,所以在文中有时出现 的云环境不统一,但是学习具体使用方法即可,在最后的篇章,有一个完整的腾讯云的实战案例。   1.什么是prometheus?   2.Prometheus安装   3.Prometheus的Exporter详解   ...

location.href使用方法总结

javascript中的location.href有非常多种使用方法,主要例如以下。 self.location.href=”/url” 当前页面打开URL页面 location.href=”/url” 当前页面打开URL页面 windows.location.href=”/url” 当前页面打开URL页面,前面三个使用方法同样。 this.locati...

16进制Unicode码和汉字互相转换

后台给我返回了一堆这样的东西,咱也不敢问,只能自己解决了! 上代码: function unicode16ToCn(unicode16data){     console.log(unicode16data);     var trans = unicode16data.match(/\u[0-9a-fA-F]{4}/g);     if(trans ...

Python_函数

一.函数的特性 1.功能性 2.隐藏细节 3.避免编写重复的代码  4.参数列表可以没有 5.可以使用return返回值,如果没有return,返回None    代码段 a = 3.1415926 result = round(a,3) # round为函数,result变量也可以是一个函数 print(result)   输出结果 3.14...

url、 src 和href 标签的区别

url 统一资源定位符  标准格式   协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名?查询 url语法规则   scheme://host.domain:port/path/filename   https://www.baidu.com/daily/view?id=163664 scheme  定义因特网服务的类型,常见的...

阿里云oss对象存储在vue中的使用

阿里云对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务可用性(或业务连续性)不低于99.995%。 OSS具有与平台无关的RESTful API接口,可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 项目中如果...