python爬虫

Python爬虫框架Scrapy入门(二)第一个爬虫程序:使用xpath爬取起点中文网

≡放荡痞女 提交于 2020-02-20 15:08:31
一、需求分析 爬取起点中文网24小时热销榜的小说: https://www.qidian.com/rank/hotsales?style=1 作为第一个爬虫程序,我们只爬取第一页每本小说的名称、作者、类型、以及是否连载。 二、创建项目 打开命令行,切换到要保存工程的文件路径后,输入 scrapy startproject qidian_hot 创建一个名为qidian_hot的项目工程。 打开该文件路径,可以看到生成了一个qidian_hot的文件夹,里面便保存着scrapy的相关文件。 三、分析页面 用谷歌浏览器或其他带有开发者工具的浏览器,打开起点中文网24小时热销榜的网址 https://www.qidian.com/rank/hotsales?style=1 然后打开开发者工具 点击刷新页面后,找到网页响应的html代码 点击右上角的箭头,然后把鼠标移到小说的信息栏,单击,会看到右边的代码框会自动定位到该信息对应的代码。 我么可以看到在这个下面对应四个标签,分别对应这本小说的信息 展开标签,可以看到里面的内容,接下来我们只需要创建爬虫得到响应,并从中提取我们想要的信息即可 四、实现爬虫 打开我们之前建立的爬虫工程,在spider目录下建立爬虫文件 qidian_spider.py 导入需要用到的库 from scrapy import Request from scrapy

Python爬虫--2019大学排名数据抓取

Deadly 提交于 2020-02-20 07:46:49
Python爬虫--2019大学排名数据抓取 准备工作 输入:大学排名URL连接 输出:大学排名信息屏幕输出 所需要用到的库:requests,bs4 思路 获取网页信息 提取网页中的内容并放到数据结构中 利用数据结构展示并输出结果 程序设计 定义函数getHTMLText()获取网页信息 定义函数UnivList()放入数据结构 定义函数printUnivList()输出到屏幕 总体而言: 写出需要自定义的函数,制作出总体的框架 写出主函数框架,实现功能 最后调用函数 步骤 查看url源代码 分析源代码,查看需要爬取的内容在什么位置 从图片中可以看出,排名信息是在 <tbody> 标签 具体的信息是在 <tr> 标签下的 <td> 标签内的string 定义函数getHTMLText def getHMLText(url): ''' 获取url信息,输出url的内容,来抓取网页的信息 ''' try: r = request.get(url, timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "抓取失败!" 定义函数UnivList() def UnivList(ulist, html): ''' 提取html中的数据,放入到ulist列表

使用python爬虫爬取最好大学网大学排名实例

六眼飞鱼酱① 提交于 2020-02-19 21:55:48
使用requests库和BeautifulSoup库实现对最好大学网大学排名信息爬取 链接: http://www.zuihaodaxue.com/Greater_China_Ranking2019_0.html 代码: import requests from bs4 import BeautifulSoup import bs4 #从网络上获取大学排名网页内容 def getHTMLText(url): try: r =requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" #提取网页内容中信息到合适的数据结构 def fillUnivList(ulist,html): soup = BeautifulSoup(html,"html.parser") for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): tds = tr('td') ulist.append([tds[0].string,tds[1].string,tds[3].string]) #利用数据结构展示并输出结果 def printUnivList

基于python爬虫的几种方法

笑着哭i 提交于 2020-02-19 18:14:07
一 requests,json格式数据 #1.获取链接 url = #2.获取响应 response = requests.get(url) response = response.content.decode() #3.提取数据 response = json.loads(response) # json字符串→python字典 #4.保存数据 f.write(json.dumps(content)) # python字典→json字符串,字典不能写入文件 注: 1.可用user-agent-switcher将浏览器切换到手机模式,获取json格式数据 2.dict、str和json之间的转换: https://blog.csdn.net/li532331251/article/details/78203438 二 selenium #1.获取链接 url = #2.获取响应 driver=webdriver.Chrome() response = driver.get(url) #3.提取数据 方法一:xml response = driver.page_source response = etree.HTML(response) 方法二:selenium,可翻页、点击等操作 response = driver.find_element_by_ #4.保存数据 三

Python爬虫——xpath的几种查询

那年仲夏 提交于 2020-02-18 03:39:37
1、直接查找一个或多个的内容 title_list = x_data.xpath("//a[@class=‘rec_topics_name’]/text()") 2、模糊查询(一群id里面前半部分一样,后半部分不一样) title_list = x_data.xpath("//a[contains(@id=‘rec_topics_name’)]/text()") 3、平级关系的下一个节点 following-sibling:* 来源: CSDN 作者: (๑• . •๑)框 链接: https://blog.csdn.net/weixin_45051787/article/details/104353719

Python爬虫连载8-JS加密(一)

心已入冬 提交于 2020-02-18 01:46:53
一、JS加密 1.有的反爬虫策略采用js对需要传输的数据进行加密处理。 2.经过加密,传输的就是密文 3.加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 4.通多阅读加密算法,就可以模拟出加密过程,从而达到破解。 5.举一个案例 """ 破解有道词典 """ from urllib import request,parse ​ def youdao(key): url = "http://www.fanyi,com/translate_o?smartresult=dict&smartresult=rule" data = { "i":"girl", "from":"AUTO", "to":"AUTO", "smartresult":"dict", "client":"fanyideskweb", "salt":"1523100789519", "sign":"b8a55a436686cd89873fa46514ccedbe", "doctype":"json", "version":"2.1", "keyfrom":"fanyi.web", "action":"FY_BY_REALTIME", "typeResult":"False" } ​ data = parse.urlencode(data).encode() headers = {

python爬虫之爬虫和反爬之战,selenium和phantomjs

孤街醉人 提交于 2020-02-18 00:43:12
一、爬虫和反爬的斗争—反爬策略 1、反爬策略 (1)通过user-agent客户端标识来判断是不是爬虫。 解决的办法:封装请求头:user-agent (2)封ip 解决办法:设置代理ip (3)通过访问频率来判断是否是非人类请求。 解决的办法:设置爬取间隔和爬取策略。 (4)验证码 解决办法:识别验证码 (5)页面数据不再直接渲染,通过前端js异步获取 解决办法: a通过selenium+phantomjs来获取数据 b找到数据来源的接口(ajax接口) 2、页面中的技术 (1)js:他是一种语言。 获取页面的元素,可以对这些页面元素做些操作。 网络数据的获取 (2)jquery:他就是一个js库,这个库可以使得js编程变得轻松容易。 (3)ajax 同步请求和异步请求。 二、什么selenium? selenium是一个web自动化测试工具。但是他本身不带浏览器的功能,这个工具就相当于一个驱动程序,通过这工具可以帮助我们自动操作一些具有浏览器功能的外部应用。 三、什么是phantomjs? phantomjs:内置的无界面浏览器引擎。他可以像浏览器那样加载页面,运行页面中的js代码。 chromedriver.exe:是谷歌浏览器驱动程序,通过这个程序可以使得selenium可以调用chrome浏览器。---有界面浏览器。 这两个的功能有界面的更加强大

Python爬虫入门二之爬虫基础了解

六月ゝ 毕业季﹏ 提交于 2020-02-17 23:16:07
1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML、JS、CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了。 因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片、文字等资源的获取。 3.URL的含义 URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。 URL的格式由三部分组成:

初级爬虫第三天

雨燕双飞 提交于 2020-02-17 10:24:40
主要内容: 付费IP的使用方式 Auth认证 cookie登录验证 requests模块 一、付费IP使用方式: 1.1 无论是免费IP还是付费IP,在使用之前,都需要测试一下,如果好使,再去使用IP爬取数据。 1.2 IP池:列表套字典 eg:[{"https": "IP1:端口1"}, {"http": "IP2: 端口2"}, {"https": "IP3: 端口3"}] 1.3 遍历IP池,利用遍历出来的IP创建IP处理器,再利用处理创建发送网络请求的opener对象 1.4 opener.open()中有一个参数timeout=x,即:x秒之后如果程序还没有反应,就算做超时,报超时,x默认为30 1.5 利用异常处理IP值不好用的报错或者超时 代码: 1 import urllib.request 2 3 爬取百度首页"https://www.baidu.com/" 4 def proxy_user(): 5 #1.目标网页URL 6 url = "https://www.baidu.com/" 7 #2. User-Agent 8 user_agent = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121

python爬虫(七)_urllib2:urlerror和httperror

我与影子孤独终老i 提交于 2020-02-17 10:19:14
urllib2的异常错误处理 在我们用 urlopen或opener.open 方法发出一个请求时,如果 urlopen或opener.open 不能处理这个response,就产生错误。 这里主要说的是URLError和HTTPError,以及对它们的错误处理。 URLError URLError产生的原因主要有: 没有网络连接 服务器链接失败 找不到指定的服务器 我们可以用 try except 语句来补货相应的异常。下面的例子里我们访问了一个不存在的域名。 #urllib2_urlerror.py import urllib2 request = urllib2.Request("http://www.sdfsdfsf.com") try: urllib2.urlopen(request, timeout= 5) except urllib2.URLError, err: print err 运行结果如下: <urlopen error [Errno 8] nodename nor servname provided, or not known> urlopen error,错误代码8.错误原因是没有找到指定的服务器。 HTTPError HTTPError是URLError的子类,我们发出一个请求时,服务器都会对应一个response应答对象,其中它包含一个数字"响应状态码