网络爬虫
文章平均质量分 59
江西师范大学-20届-吴悠
江西师范大学20届软件学院毕业生,大数据方向,大数据技术、机器学习、深度学习、爬虫、Django、区块链、ACM、PS修图、Pr视频剪辑、摄影都搞。爱好旅游、摄影、跑步、读书。
展开
-
Scrapy:使用Item Pipeline处理数据
Item Pipeline是处理数据的组件process_item一个Item Pipeline必须实现process_item(item,spider)方法,该方法用来处理爬取到的数据,item是爬取到的数据,spider是此项数据的Spider对象open_spider(self,spider)spider打开时回调此方法,常用于开始处理数据之前的初始化工作,如打开数据库close_spider(self,spider)spider关闭时回调此方法,用于处理完数据的某些清理工作,如关闭数据库原创 2020-05-20 10:15:52 · 281 阅读 · 0 评论 -
Scrapy:使用Item封装数据
在Scrapy使用自定义的Item类封装爬取到的数据Item基类自定义数据类的基类Field类自定义数据包含哪些字段自定义一个数据类需要继承Itemfrom scrapy import Item,Fieldclass BookItem(Item): name = Field() price = Field()其效果跟我们定义的字典类似...原创 2020-05-19 00:00:34 · 233 阅读 · 0 评论 -
Xpath和CSS的语法表格
Xpathcss原创 2020-05-18 23:39:24 · 205 阅读 · 0 评论 -
Scrapy:使用Selector提取数据
1、创建对象将HTML的文档字符串传给Selector构造器方法的text参数from scrapy.selector import Selectortext = "" #这是HTML文档内容,此处省略掉selector = Selector(text=text)使用一个Response对象构造Selector对象,将其传给Selector构造器方法的response参数from scrapy.selector import Selectorfrom scrapy.http imp原创 2020-05-18 23:33:24 · 269 阅读 · 0 评论 -
使用Scrapy框架的基本步骤
Scrapy框架中的数据流对象:Request(Scrapy中的HTTP请求对象)、Response(Scrapy中的HTTP响应对象)、Item(从页面中爬取的一项数据)1、继承scrapy.Spiderimport scrapyclass BooksSpider(scrapy.Spider):2、为Spider命名class BooksSpider(scrapy.Spider): name = "books"3、设置起始爬取点通过类属性start_urls来设置起始爬取点,s原创 2020-05-17 16:48:57 · 343 阅读 · 0 评论 -
爬取豆瓣读书的图书信息和评论信息
最近在做毕业设计,需要收集用户的评分数据做协同过滤算法,同时收集评论数据做情感分析注意一个比较坑的地方就是豆瓣图书可以没有评分,或者用户评论了但没给评分。而且豆瓣图书的编码方式很无奈呀,热门书籍附近总是冷门书籍,无评分、无评论那种,所以经常输出failedfake_useragent的用法在这次爬虫中使用了fake_useragent来伪造请求头,因为听说豆瓣的反爬机制比较好fake_us...原创 2020-03-10 21:57:14 · 1244 阅读 · 3 评论 -
Python连接MySQL可能会出现的问题
连接MySQL数据库大多使用MySQLdb和PyMySQL,一下皆是使用PyMySQL安装好MySQL后需要匹配环境变量,在PATH环境变量后追加如D:\MySql\bin,即MySQL的bin目录路径,就可以在cmd界面写MySQL命令行了...原创 2019-04-02 21:02:33 · 349 阅读 · 0 评论 -
Pytho对MySQL进行的操作
创建数据库import pymysqldb=pymysql.connect(host="localhost",user="root",password="123456",port=3306)cursor=db.cursor() #获取数据库的操作游标cursor.execute("select version()")data=cursor.fetchone() #获取第一条数据pri...原创 2019-04-03 16:42:47 · 397 阅读 · 0 评论 -
Selenium的使用
可见即可爬基本使用from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support import expected_conditions as ECf...原创 2019-04-09 23:38:23 · 199 阅读 · 0 评论 -
代理的使用
没钱氪金,所以我用的都是网上的免费代理免费代理地址如下:http://ip.zdaye.com/dayProxy.html免费代理很多时候不好用,我用的时候程序报错请求超时,那再换一个代理就好了socks代理适用的范围最广urllibhttp类型代理ProxyHandler设置代理,参数是字典类型,键名为协议类型,键值是代理。此处代理需要加上协议,http和https。若请求的是htt...原创 2019-04-16 16:09:59 · 444 阅读 · 0 评论 -
Cookies模拟登录GitHub
from lxml import etreeimport requestsclass Login(object): def __init__(self): self.headers={ "Referer":"https://github.com/", "User-Agent":"Mozilla/5.0 (Windows N...原创 2019-04-17 19:12:06 · 251 阅读 · 0 评论 -
mitmproxy的安装和使用
mitmproxy的安装我使用pip install mitmproxy没有安装成功,所以我选择了以安装包的方式安装下载地址:https://github.com/mitmproxy/mitmproxy/releases当前的最新版本为4.0.4,下载windows-installer.exe就好安装完成之后如下:在cmd界面输入mitmdump,就可以产生CA证书在用户目录下的....原创 2019-04-20 11:44:24 · 1067 阅读 · 0 评论 -
Charles的使用
PC端配置证书如下点击即可进入证书的安装页面移动端(安卓系统)配置证书连接上电脑的热点注意Charles端口号是8888,mitmproxy端口号是8080之后电脑上的Charles出弹出窗口在手机上打开chls.pro/ssl,下载文件开启SSL监听在电脑的Charles上点击Proxy->SSLProxying Settings,在弹出的窗口中点击Add按钮,...原创 2019-04-20 16:17:02 · 185 阅读 · 0 评论 -
爬虫遇到iframe报错message: no such element: Unable to locate element或Element is not clickable at point
1、iframe今天使用selenium在爬取网易云碰到报错message: no such element: Unable to locate element:当时我是直接定位到歌曲的超链接位置SongLink=browser.find_element_by_class_name("s-fc7")然后就报错说找不到这个element翻阅了一些别人的博客,因为iframe是嵌套在页面里...原创 2019-06-01 16:27:18 · 4632 阅读 · 0 评论 -
运用selenium爬取网易云音乐的歌曲ID和评论信息以及歌手专辑信息
爬虫代码实现的功能最近在用Django做工作室的项目音乐推荐系统,其中一个部分就是通过搜索栏去搜索歌曲,并通过网易云音乐的外链播放器在自己的页面上播放音乐(这需要获取到歌曲ID),在播放器下面展示歌曲的评论我默认搜索栏搜出的第一个版本的歌曲就是想要的爬虫代码遇到的问题虽然借鉴了别人的代码,但在嫁接到我自己的前面一部分代码时出现了问题,报错Element is not clickable a...原创 2019-06-01 23:07:04 · 1038 阅读 · 0 评论 -
网易云音乐的API接口及爬虫代码
1、查看歌曲http://www.xiaoxina.cn/api.php?s=歌曲名&num=数量它的属性为代码如下:import requestsimport jsondef get_song(SongName): url = "http://www.xiaoxina.cn/api.php?s=" + SongName + "&num=10" re...原创 2019-06-08 23:09:39 · 11449 阅读 · 1 评论 -
配置相应的chromedriver
chromedriver下载地址:https://chromedriver.storage.googleapis.com/index.htmlChrome旧版下载地址:http://mydown.yesky.com/pcsoft/416318/versions/选择谷歌快捷方式的打开文件所在位置谷歌版本是73.0.3683.86chromedriver的2.46版本支持73将下载的文...原创 2019-04-07 16:28:36 · 689 阅读 · 0 评论 -
对网易有道词典的信息抓取
首先需要查看它的XHR,由此来构造爬虫#有道翻译使用requestsimport requestsimport time,random,hashlib#生成data中salt和sign两个数据def salt_sign(keyword): #m = hashlib.md5() now_time = int(time.time()*1000) salt = n...原创 2019-04-07 09:41:22 · 349 阅读 · 0 评论 -
Ajax数据抓取及抓取今日头条上的图片
越来越多的网页的原始HTML文档不会包含任何数据,数据都是通过Ajax统一加载后再呈现出来的Ajax全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML。Ajax可以在页面不被全部刷新的情况下更新其内容,页面实际上是在后台与服务器进行了数据交互,获取到数据之后,再利用JavaScript改变网页,这样网页就更新了。基本原理发送请求-&g...原创 2019-04-06 23:50:54 · 323 阅读 · 0 评论 -
网络爬虫之计算机网络基础
URI的全称为Uniform Resource Identifer即统一资源标志符URL的全称为Universal Resource Locator即统一资源定位符URL是URI的子集,也就是说每个URL是URI,但不是每个URI是URL,URI还有一个子类叫做URN,它的全称为Universal Resource Name,即统一资源名称。URN只命名资源而不指定如何定位资源。...原创 2019-03-06 18:01:04 · 273 阅读 · 0 评论 -
requests的高级用法
1、文件上传将文件favicon.ico上传,但favicon.ico必须和脚本在一个目录下。import requestsfiles={'file':open('favicon.ico','rb')}r=requests.post("http://httpbin.org/post",files=files)print(r.text)2、Cookies的获取与设置获取Cookies...原创 2019-03-09 14:53:09 · 217 阅读 · 0 评论 -
正则表达式
正则表达式在线测试工具:http://tool.oschina.net/regex/1、match()向它传入要匹配的字符串以及正则表达式,就可以检测这个正则表达式是否匹配字符串。match()方法会尝试从字符串的起始位置匹配正则表达式,如果匹配就返回匹配结果。如果不匹配,返回None。match()中,第一个参数传入正则表达式,第二个参数传入要匹配的字符串。打印输出结果是SRE_Mat...原创 2019-03-10 09:56:56 · 184 阅读 · 0 评论 -
XPath解析库
首先需要安装lxml库XPath常用规则etree模块etree模块可以自动修正HTML文本,调用tostring()方法即可输出修正后的HTML代码,但结果是bytes类型,这里利用decode()方法将其转成str类型from lxml import etreetext='''<div><ul><li class="item-0"><...原创 2019-03-15 10:53:38 · 211 阅读 · 0 评论 -
URLError类处理异常
URLError类来自urllib库的error模块,它继承自OSError模块,是error异常模块的基类,由request模块产生的异常都可以通过捕获这个类来处理。它具有一个属性reason,就是返回错误的原因代码如下:去打开一个不存在的页面from urllib import request,errortry: response=request.urlopen("http:/...原创 2019-03-07 19:09:54 · 597 阅读 · 0 评论 -
链接的解析、拼合和生成
解析链接基础知识:://前面的就是scheme,代表协议第一个/符号前面便是netloc,域名后面是path,访问路径分号;后面是params,代表参数问号?后面是查询条件query,一般用作GET类型的URL井号#后面是锚点,用于直接定位页面内部的下拉位置一个标准的链接格式:scheme://netloc/path;params?query#fragmenturlparse()...原创 2019-03-07 19:52:29 · 905 阅读 · 0 评论 -
分析Robots协议
Robots协议也称作爬虫协议、机器人协议,它通常是一个叫做robots.txt的文本文件,一般放在网站的根目录下。robotsparser模块来解析robots.txt,从而判断一个爬去爬虫是否有权限来爬去这个网页。代码:from urllib.robotparser import RobotFileParserrp=RobotFileParser()rp.set_url("htt...原创 2019-03-07 20:06:31 · 250 阅读 · 0 评论 -
BeautifulSoup解析库
Beautiful Soup借助网页结构和属性等特征来解析网页Beautiful Soup在解析时实际上依赖解析器,它除了支持Python标准库中的HTML解析器外,还支持一些第三方解析器(比如lxml)。如果使用lxml。那么在初始化Beautiful Soup时,可以把第二个参数改为lxml即可from bs4 import BeautifulSoupsoup=BeautifulSoup...原创 2019-03-15 16:18:00 · 200 阅读 · 0 评论 -
抓取猫眼电影排行(通过正则表达式解析)
import requestsfrom urllib import errorimport reimport jsonimport timedef getHTML(url): header={ 'User-Agent':'Mozilla/5.0(Macintosh;Intel Mac OS X 10_13_3) AppleWebKit/537.36(KHTML,...原创 2019-03-11 20:27:02 · 415 阅读 · 0 评论 -
GET请求与POST请求及高级用法
GET请求给请求添加参数,可以使用params参数代码:import requestsdata={ &quot;name&quot;:&quot;germey&quot;, &quot;age&quot;:22}r=requests.get(&quot;http://httpbin.org/get&quot;,params=data)原创 2019-03-12 09:24:08 · 299 阅读 · 0 评论 -
urllib进行爬虫的一些参数设置
通过设置timeout参数即超时时间来控制一个网页如果长时间未响应,就跳过对它的抓取,这可以利用try和except来实现import urllib.requestimport socketimport urllib.errortry: response=urllib.request.urlopen("http://python.org",timeout=0.1) #获取服务器...原创 2019-03-12 09:24:40 · 238 阅读 · 0 评论 -
pyquery解析库
初始化pyquery也需要传入HTML文本来初始化一个PyQuery对象。可以直接传入字符串、URL、文件名。传入URLfrom pyquery import PyQuery as pqdoc=pq(url="https://blog.csdn.net/qq_39905917/article/category/8719278")print(doc("title"))传入文件from...原创 2019-03-18 19:49:52 · 268 阅读 · 0 评论 -
安装MongoDB可能会出现的问题
MongoDB数据库下载地址:https://www.mongodb.com/download-center/community安装PyMongo第三方库:pip install pymongo原创 2019-04-04 10:26:44 · 210 阅读 · 0 评论 -
爬虫的数据存储(TXT、JSON、CSV)
TXT文本存储将知乎的发现板块的内容存入txt文本import requestsfrom pyquery import PyQuery as pqurl="https://www.zhihu.com/explore"myheader={ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit ...原创 2019-03-27 17:22:43 · 514 阅读 · 0 评论 -
Pytho对MongoDB进行操作
在cmd.exe进入MongoDB的方法,首先需要进入MongoDB的安装目录的bin下输入:mongo显示数据库:show dbs连接MongoDBimport pymongoclient=pymongo.MongoClient(host="localhost",port=27017) #方法一client=pymongo.MongoClient("mongodb://...原创 2019-04-06 11:15:50 · 167 阅读 · 0 评论 -
python之网络爬虫
python之网络爬虫首先需要安装好requests库,之后引用库import requests1、requests对象的属性get(url,timeout=n)对应于http的get方法,设定每次请求超时时间为n秒status_code请求的返回状态,整数,200表示连接成功,404表示失败raise_for_status()如果不是200,则产生异常text即url对应的页面内容...原创 2018-11-19 09:17:32 · 300 阅读 · 0 评论