网络爬虫——针对任意主题批量爬取PDF

|本文为博主原创,转载请说明出处

任务需求:要求通过Google针对任意关键字爬取大量PDF文档,如K-means,KNN,SVM等。

环境:Anaconda3——Windows7-64位——Python3.6——lantern——迅雷极速版——360浏览器

先贴代码

 1 # -*- coding: utf-8 -*-
 2 import urllib.request
 3 import re#导入正则表达式包
 4 import time
 5
 6 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 7 url_part_1="https://www.google.co.jp/search?q=svm+filetype:pdf&lr=&hl=zh-CN&as_qdr=all&ei=VIdnWZ3SGIS18QXW3aAg&start="
 8 url_part_2="&sa=N&biw=1745&bih=810"
 9 Page_number=28 #每一个搜索结果的页数,这个针对不同的主题结果会不一样
10 #这几行代码针对不同的主题要进行相应的修改,稍后再解释url_part_1和url_part_2的意思
11 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12
13 timeout=20 #请求时间20秒
14 sleep_download_time=5 #爬一个网页休息5秒钟,这样有利于不被Google认为是攻击行为,当然,这只是一个方面
15 url_list_total=[]#将所有pdf文档的链接地址放在这个列表当中
16 user_agent = ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36‘
17 #这个是我的360浏览器的user_agent,按F12可查
18
19 for i in range(0,Page_number):
20     url_page=url_part_1+str(i*10)+url_part_2#拼接成每个Google搜索结果的页面地址
21     headers = { ‘User-Agent‘ : user_agent,‘Referer‘:url_page}
22     request= urllib.request.Request(url_page,headers=headers)
23     try:#可能会出现异常[WinError 10054]
24         page = urllib.request.urlopen(request,timeout=timeout)
25     except urllib.error.URLError as e:
26         print(e.reason)
27
28     html= page.read().decode(‘utf-8‘)#必须要有.decode(‘utf-8‘)
29     pattern = re.compile(‘<h3 class="r".*?<a href="(.*?)" onmousedown‘)#这个表达式主要是为了获取pdf的链接地址
30     url_list=re.findall(pattern,html)
31
32     for line in url_list[:]:
33         url_list_total.append(line)
34     url_list=[]
35     print(page.getcode())
36     print(i)
37     page.close()
38     html=[]
39     time.sleep(sleep_download_time)#隔几秒再运行
40
41 f=open(‘url_list_total.txt‘,‘w‘)
42 for url in url_list_total:
43     f.write(url)
44     f.write(‘\n‘)
45 f.close()

下面解释一下7-8行,通过Google搜索的结果的地址是有规律的,如通过关键字svm filetype:pdf返回的结果的第一页地址如下

https://www.google.co.jp/search?q=svm+filetype:pdf&lr=&hl=zh-CN&as_qdr=all&ei=VIdnWZ3SGIS18QXW3aAg&start=10&sa=N&biw=1745&bih=810

做如下拆分

"https://www.google.co.jp/search?q=svm+filetype:pdf&lr=&hl=zh-CN&as_qdr=all&ei=VIdnWZ3SGIS18QXW3aAg&start="     +    10     +       "&sa=N&biw=1745&bih=810"

分成三部分,方便后面进行迭代。

这样得到所有的pdf的链接下载地址之后就可以通过迅雷批量下载啦!

时间: 2024-08-25 10:56:07

网络爬虫——针对任意主题批量爬取PDF的相关文章

爬虫学习 Python网络爬虫第三弹《爬取get请求的页面数据》

爬虫学习 Python网络爬虫第三弹<爬取get请求的页面数据> 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页面所有数据值 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #导包 4

Python爬虫学习教程,批量爬取下载抖音视频

这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 项目源码展示: 1 ''' 2 在学习过程中有什么不懂得可以加我的 3 python学习交流扣扣qun,934109170 4 群里有不错的学习教程.开发工具与电子

python网络爬虫之使用scrapy自动爬取多个网页

前面介绍的scrapy爬虫只能爬取单个网页.如果我们想爬取多个网页.比如网上的小说该如何如何操作呢.比如下面的这样的结构.是小说的第一篇.可以点击返回目录还是下一页 对应的网页代码: 我们再看进入后面章节的网页,可以看到增加了上一页 对应的网页代码: 通过对比上面的网页代码可以看到. 上一页,目录,下一页的网页代码都在<div>下的<a>元素的href里面.不同的是第一章只有2个<a>元素,从二章开始就有3个<a>元素.因此我们可以通过<div>

python网络爬虫之scrapy 调试以及爬取网页

Shell调试: 进入项目所在目录,scrapy shell "网址" 如下例中的: scrapy shell http://www.w3school.com.cn/xml/xml_syntax.asp 可以在如下终端界面调用过程代码如下所示: 相关的网页代码: 我们用scrapy来爬取一个具体的网站.以迅读网站为例. 如下是首页的内容,我想要得到文章列表以及对应的作者名称. 首先在items.py中定义title, author. 这里的Test1Item和Django中的modul

【Python网络爬虫四】通过关键字爬取多张百度图片的图片

最近看了女神的新剧<逃避虽然可耻但有用>,同样男主也是一名程序员,所以很有共鸣 被大只萝莉萌的一脸一脸的,我们来爬一爬女神的皂片. 百度搜索结果:新恒结衣 本文主要分为4个部分: 1.下载简单页面 2.爬取多张图片 3.页面解码 4.爬取过程排错处理 1.下载简单页面 通过查看网页的html源码,分析得出,同一张图片共有4种链接: {"thumbURL":"http://img5.imgtn.bdimg.com/it/u=2243348409,3607039200

网络爬虫入门——案例一:爬取百度贴吧帖子

参考资料: Python:http://www.runoob.com/python/python-intro.html Python爬虫系列教程:http://www.cnblogs.com/xin-xin/p/4297852.html 正则表达式:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html 本贴目标: 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3

Python3网络爬虫实战-9、APP爬取相关库的安装:Appium的安装

Appium 是移动端的自动化测试工具,类似于前面所说的 Selenium,利用它我们可以驱动 Android.iOS 等设备完成自动化测试,比如模拟点击.滑动.输入等操作,其官方网站为:http://appium.io/,本节来了解一下 Appium 的安装方式. 1. 相关链接 GitHub:https://github.com/appium/appium 官方网站:http://appium.io 官方文档:http://appium.io/introduction... 下载链接:htt

Python3网络爬虫实战-6、APP爬取相关库的安装:Charles的安装

除了 Web 网页,爬虫也可以对 APP 的数据进行抓取,APP 中的页面要加载出来,首先需要获取数据,那么这些数据一般是通过请求服务器的接口来获取的,由于 APP 端没有像浏览器一样的开发者工具直接比较直观地看到后台的请求,所以对 APP 来说,它的数据抓取主要用到一些抓包技术. 本书介绍的抓包工具有 Charles.MitmProxy.MitmDump,APP 一些简单的接口我们通过 Charles 或 MitmProxy 分析找出规律就可以直接用程序模拟来抓取了,但是如果遇到更复杂的接口我

网络爬虫2:使用crawler4j爬取网络内容

需要两个包: crawler4j-4.1-jar-with-dependencies.jar slf4j-simple-1.7.22.jar(如果不加,会有警告:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".) 相关包下载: http://download.csdn.net/detail/talkwah/9747407 (crawler4j-4.1-jar-with-dependencies.jar相关资