python使用关键字爬取url

news/2024/7/19 11:37:52 标签: python, 数据库, 爬虫

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

开发环境:windows7+python3.6.3

开发语言:Python

开发工具:pycharm

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

 

废话不多说,贴上代码:

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

 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('\n')
49                     break
50                     return_set.add(i)
51                     f.write('\n')
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

 

转载于:https://www.cnblogs.com/a-dong/p/9825995.html


http://www.niftyadmin.cn/n/511817.html

相关文章

[OS-Linux]详解Linux的进程2(进程的优先级,环境变量,程序地址空间,进程地址空间,进程调度队列)

本文基于CentOS,深入解释进程的优先级,环境变量,程序地址空间,进程地址空间,进程调度队列。 目录 一、进程优先级 1.基本概念 2.查看系统进程 3. PRI && NI 4.其他概念 二、环境变量 1. 基本概念 2.…

wordcount

作者:201531060695 余沛然一: Github代码下载链接:https://gitee.com/charlies1/wordcount/tree/master本次作业地址:https://edu.cnblogs.com/campus/xnsy/Test/homework/2203一、项目需求 WordCount的需求可以概括为&#xff1a…

[OS-Linux]详解Linux进程控制

本文基于CentOS,深入解释进程的创建,进程等待,进程程序替换,进程终止,shell运行原理,做简单的shell。 目录 一、进程创建 1. fork函数 2. fork函数返回值 3. 写时拷贝 4. fork用法 5. fork调用失败的…

[OS-Linux]详解Linux基础开发工具

本文基于CentOS,详细介绍了Linux下的几种开发工具的使用,包括vim,gcc/g,gdb、Makefile。 目录 一、Linux编辑器-vim 1. vim的基本概念 正常/普通/命令模式(Normal mode) 插入模式(Insert mode) 末行模式(last line mode) 2.…

python接口测试框架实战与自动化进阶(三)

python接口测试框架实战与自动化进阶 一、持续集成 1、持续集成环境搭建 1)安装Jenkins 官网下载后直接安装:https://jenkins.io/ 终端直接安装及启动:java -jar jenkins.war 2)Jenkins用于: 持续、自动地构建/测试软件…

[OS-Linux]详解Linux的基础IO (1) ------- 文件描述符fd

本文由文件IO相关操作的一些操作,进一步详解了文件描述符fd,重定向,FILE结构体。 目录 一、C语言中的文件I/O操作 二、系统文件I/O 1. 接口介绍 2. open函数返回值 三、文件描述符fd 四、文件描述符的分配规则 六、dup2 系统调用的使…

洛谷——P4932 浏览器

P4932 浏览器 __stdcall给了你n个点,第i个点有权值x[i],对于两个点u和v,如果x[u] xor x[v]的结果在二进制表示下有奇数个1,那么在u和v之间连接一个Edge,现在__stdcall想让你求出一共有多少个Edge。 如果你没能成功完成…

[C/C++]详解C++的多态

本文详细介绍了C中的多态,从多态的定义,到多态的原理。 目录 一、多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写 4.虚函数重写的例外 (1)协变 (2) 析构函数的重写 5. C11中override 和 final (1) final …