python爬虫

爬虫学习-爬LOL皮肤

孤街醉人 提交于 2020-02-28 19:15:24
# ! /sur/bin/python # coding:utf-8 import re import requests import time def get_hero_pic(): #图片URL = 固定+英雄ID+皮肤编号 #1 先获得英雄id res = requests.get("https://lol.qq.com/biz/hero/champion.js").text reg =r'"keys":(.*?),"data"' date = re.findall(reg,res) path =r'C:\Users\CF-54\Desktop\eas\pictures\\' hero_list = [] url_list = [] hero_list = [] for hero_number,hero_name in eval(date[0]).items(): #print(hero_number,hero_name) 显示编号和名字 for i in range(15): hero_path = path+hero_name+"{:03}".format(i)+".jpg" hero_list.append(hero_path) hero_url = 'http://ossweb-img.qq.com/images/lol/web201310/skin/big'

Python爬虫学习==>第十章:使用Requests+正则表达式爬取猫眼电影

瘦欲@ 提交于 2020-02-28 19:13:25
学习目的:   通过一个一个简单的爬虫应用,初窥门径。 正式步骤 Step1:流程框架 抓取单页内容:利用requests请求目标站点,得到单个页面的html代码,返回结果; 正则表达式分析:根据html页面代码分析得到猫眼电影的名称、主演、上映时间、评分、图片信息等; 保存至文件:通过文件的形式将结果保存,每一部电影一个结果一行json字符串; 开启循环及多线程:对页面内容进行遍历,开启多线程提高抓取效率 Step2:实际步骤+分析 1. 在pycharm中新建一个Python项目,新建一个文件spider.py 2.运行代码: # -*- coding:utf-8 -*- import requests import re import json from requests.exceptions import RequestException from multiprocessing import Pool def get_page_html(url): #设置headers是猫眼加了反爬机制 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' }

python--爬虫(XPath与BeautifulSoup4)

こ雲淡風輕ζ 提交于 2020-02-28 11:49:25
获取页面内容除使用正则意外,还可以使用XPath,其原理是将html代码转换为xml格式,然后使用XPath查找html节点或元素。 选取节点 XPath使用路径表达式来选取XML文档中的节点或节点集。 常用的路径表达式见下表: 表达式 描述 nodename 选取此节点的所有子节点 / 从根节点选取 // 从匹配选择的当前节点选择文档中的节点,不考虑其是否为子级 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 谓语 谓语用来查找某个特定的节点或者包含某个指定的值得节点,被嵌在方括号中。 路径表达式 释义 /one/two[1] 选取属于one子元素的第一个two元素 /one/two[last()] 选取属于one子元素的最后一个two元素 /one/two[last()-1] 选取属于one子元素的倒数第二个two元素 /one/two[position()<3] 选取最前面的两个属于one元素的子元素two元素 //one[@lang] 选取所有拥有名为lang的属性的one元素 //one[@lang='test'] 选取所有拥有值为test的lang属性的one元素 /one/two[position>10] 选取one元素的所有two元素,且其中position属性的值大于10 选取未知节点 通配符 描述 * 匹配如何元素节点 @* 匹配任何属性节点

【Python 爬虫错误】[WinError 10054] 远程主机强迫关闭了一个现有的连接。

社会主义新天地 提交于 2020-02-28 09:30:28
爬虫的时候出现错误:[WinError 10054] 远程主机强迫关闭了一个现有的连接。 错误原因:抓取信息太过频繁,引起远程主机的怀疑,被网站怀疑是恶意攻击行为。 可以解决的方法: 1. 换个wifi连接 简单粗暴,但是很实用,亲测有效。 2. 用try—except在报错的时候重新调用函数,多试几次就可以 适用于爬虫主体为函数的情况。 参考链接: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 3. 修改程序3步走 urlopen之后写入关闭操作 让代码在抓取url之后关闭,减少大量抓取信息让远程怀疑的可能性 response = urllib . request . urlopen ( request ) - - snip - - response . close ( ) 设置socket默认等待时间 设置读取信息的最大时间限制,如果超时的话程序将自动read下一项 socket . setdefaulttimeout ( t ) 设置sleep()等待时间 让代码等待一段时间后继续运行,避免太过频繁地进行信息抓取 time . sleep ( t ) 可以系统地解决问题,不过操作起来没有前面两个快捷,如果前面两个方法不能解决的话,可以尝试用这个方法。 参考链接: 【Python爬虫错误

scrapy爬虫框架使用命令运行出错

早过忘川 提交于 2020-02-27 23:49:52
在我学习莫烦Python的爬虫最后的scrapy框架时,在terminal中使用scrapy runspider try24.py -o res.json命令,输出: Fatal error in launcher: Unable to create process using ‘“d:\bld\scrapy_1572360424769_h_env\python.exe” “G:\Anaconda3\Scripts\scrapy.exe” runspider try24.py -o res.json’ 参考 使用python -m scrapy runspider try24.py -o res.json,加上python -m 表示以模块为脚本运行。 -m mod : run library module as a script (terminates option list) 意思是将库中的python模块用作脚本去运行 来源: CSDN 作者: 海平面远方开始阴霾 链接: https://blog.csdn.net/weixin_44416759/article/details/104544969

【Python3爬虫】一次应对JS反调试的记录

天大地大妈咪最大 提交于 2020-02-27 17:28:51
一、前言简介   在前面已经写过关于 JS 反调试的博客了,地址为: https://www.cnblogs.com/TM0831/p/12154815.html 。但这次碰到的网站就不一样了,这个网站并不是通过不断调试消耗内存以反调试的,而是直接将页面替换修改掉,让人无法调试页面。    二、网页分析   本次爬取的网址为: https://www.aqistudy.cn/ ,但打开开发者工具后,页面变成了下面这样:      很明显这是触发了反爬,页面直接被替换掉了。当我们打开开发者工具时,程序检测到了开发者工具被打开了,所以触发反爬,将页面修改成了上面的样子。   页面被修改了,我们就没办法了吗?自然是有对策的,我们可以查看一下网页源码,在开发者工具中切换到 Source 选项,找到首页 index 的源码,如下图:      往下翻找,可以找到如下内容,可以看到在 endebug() 方法中就是修改页面的代码:      通过查看上面的代码可以发现,debugflag 就是判断条件,而 loadTad() 则是获取数据的接口,当程序检测到开发者工具被打开时,debugflag 的值改为 true,endebug() 函数执行,页面也就被修改掉了。   那么 endebug() 方法的具体内容是什么呢?全局搜索“endebug”,可以找到一个 JavaScript 文件

python一个简单的爬虫测试

有些话、适合烂在心里 提交于 2020-02-27 07:01:13
之前稍微学了一点python,后来一直都没用,今天稍微做一个小爬虫试一试。。 参考了: http://www.cnblogs.com/fnng/p/3576154.html 太久没用了,都忘记pycharm编译的时候要选文件。。我还纳闷怎么一直报错。。怎么练hello world都是不能run。。无语。。 贴一下今天实验的代码好了。 1 #coding=utf-8 2 import urllib 3 import re 4 5 def getHtml(url): 6 page = urllib.urlopen(url) 7 html = page.read() 8 return html 9 def getImg(html): 10 reg=r'src="(.+?\.jpg)" ></div><br>' 11 imgre=re.compile(reg) 12 imgList=re.findall(imgre,html) 13 x=0 14 for imgurl in imgList: 15 urllib.urlretrieve(imgurl,'%s.jpg'%x) 16 x+=1 17 18 html = getHtml("https://tieba.baidu.com/p/5099605942?see_lz=1") 19 20 print getImg(html)

微信公众号爬虫技术分享

…衆ロ難τιáo~ 提交于 2020-02-27 06:50:29
采集方案分析对比 目前主流的抓取公众号文章及动态信息不同采集方案对比如下: 由上图可知: 如果需要长期监控公众号实时的文章,我推荐使用逆向的方式; 如果要做获取文章阅读点赞评论量或搜狗微信转永久链接等接口,推荐使用万能key的方式; 至于中间人的方式,技术门槛低,开发周期短,如果要监控的公众号不多,且实效性要求不那么高,我推荐使用这种方式。 下面将详细介绍基于中间人方式采集的原理 采集方案详解 基于中间人方式 采集原理 中间人好比中介,这里指抓包工具,大致的原理图如下 微信客户端之所以可以看到文章信息,是因为请求了微信的服务器,服务器收到请求后,将对应的文章返给客户端。这里我们通过抓包工具(中间人)拦截数据,将拦截到的文章数据解析入库,就完成了一次简单的数据抓取。 那么如何实现多个文章自动抓取,及列表页自动翻页呢。总不能人肉去点吧。那么最先想到的是自动化工具,比如大家都知道的按键精灵。但是这种自动化工具如何与抓包工具交互,是个问题。我们要保证在数据被拦截入库之后,再去点击下一个抓取的目标,又或者当网络异常时,自动化工具如何检测出来,然后重刷当前页面,发起请求。即使可以实现,应该也很麻烦,所以没采用这种方法。本人也不喜欢自动化工具,总感觉它不稳定。。。 既然微信文章界面是html的,我们可以嵌入js嘛,让他自动跳转。那么如何在文章和源代码里嵌入自己的js呢?这时中间人就派上用场了

Python爬虫

こ雲淡風輕ζ 提交于 2020-02-27 00:31:56
0.1 Python 总体架构 0.2 Python 源代码的组织 0.3 Windows 环境下编译Python 0.4 Unix/Linux 环境下编译Python 0.5 修改Python源代码 0.6 通往Python之路 0.7一些注意事项 来源: https://www.cnblogs.com/hhf821244793/p/12369866.html

python 爬虫 scrapy 入门(1)

北城以北 提交于 2020-02-26 12:55:45
python 爬虫 本问是根据崔老师的 python3-网络爬虫开发实战进行学习的。 如果有需要PDF书籍的可以发邮件联系。 @ author :Leo @ Mail:leo_lsj@ 163. com 什么是爬虫 爬虫可以简单分为几步:抓取页面、分析页面和存储数据。 在本书中,我们用到的第三方库有requests 、Selenium 和aioh 即等 来源: CSDN 作者: Leo_lsj 链接: https://blog.csdn.net/Leo_lsj/article/details/104495433