python爬虫

python爬虫学习笔记(二)

a 夏天 提交于 2020-03-04 06:17:34
上一篇介绍了爬虫的基本用法,用来简单的爬取了一个网站,我们直接用网址就访问了一个网站,但这样是很不好的,有的网站这样也进不去,打个比方,就像我们知道某个人的家庭住址,我们想找她的时候直接就闯了进去,也没说我们是谁,也没和他说我们要来找他,这样可以吗?当然不行!所以我们访问网站时还应该把我们伪装一下,伪装成一个浏览器,这样我们就算是个正常用户了。 我们怎么来伪装呢?要执行更复杂的操作,我们需要给urlopen传入一个requst对象而不是一个简单的网址, import urllib . request #引入库 req = urllib . request . Request ( "https://www.baidu.cn" ) #创建request对象 response = urllib . request . urlopen ( req ) #访问网页 text = response . read ( ) . decode ( ) #解码 print ( text ) 而要实现我们伪装成浏览器的目的,我们还需要给request对象一个User-Agent的报头,这个User-Agent,是每个浏览器都有的一个东西,你可以按F12,在开发者工具的network里找到。 再说request对象,他可以接收多个参数 url(网址), data(用来传递post参数,默认空),

scrapy框架爬虫初体验——豆瓣评分top250

空扰寡人 提交于 2020-03-04 05:12:57
环境 Scrapy安装 Scrapy抓取步骤 第一步:新建项目 创建scrapy项目 设置settings.py 创建爬虫文件(douban_spider.py) 第二步:明确目标 打开网站 分析抓取内容 实现数据结构(items.py) 第三步:制作爬虫 测试 编写解析文件(douban_spider.py的parse()方法) 第四步:保存数据 存到文件 存到数据库 其他部分:爬虫的伪装 Ip代理中间件编写(middlewares.py) user-agent中间件编写(middlewares.py) 注意事项 参考资料 环境 win 10 + pycharm + python 3.6 + scrapy 3.2.3 Scrapy安装 pip install scrapy Scrapy抓取步骤 第一步:新建项目 第二步:明确目标 第三步:制作爬虫 第四步:存储内容 第一步:新建项目 创建scrapy项目 scrapy startproject douban 设置settings.py settings.py:定义项目的全局设置。 爬虫协议设置: # Obey robots.txt rules ROBOTSTXT_OBEY = True 默认 ROBOTSTXT_OBEY = True ,即遵守此协议;当爬取内容不符合该协议且仍要爬取时,设置 ROBOTSTXT_OBEY =

python爬虫01-使用urllib爬取网页

心不动则不痛 提交于 2020-03-03 20:47:23
1 import urllib.request # 导入模块 2 import urllib.parse 3 4 # 将网页赋给变量file 5 file = urllib.request.urlopen("http://www.baidu.com") 6 7 # 读取网页 8 data = file.read() # 读取全部内容,结果作为一个字符串变量 9 dataline = file.readline() # 读取一行的内容 10 datalines = file.readlines() # 读取全部内容,赋值给一个列表 11 12 # 存储网页 13 fhandle = open("./1.html","wb") # 以wb方式打开文件 14 fhandle.write(data) # 写入 15 fhandle.close() # 关闭文件 16 17 # 另一种方式,直接存储网页 使用urlretrieve 18 filename = urllib.request.urlretrieve("http://www.baidu.com",filename="./2.html") 19 urllib.request.urlcleanup() # 清除urlretrieve产生的缓存 20 21 #其他常用内容 22 file.info() # 输出对应网页的info 23

1.爬虫基本介绍

让人想犯罪 __ 提交于 2020-03-03 00:58:24
目录 1 爬虫介绍 1.1 爬取流程 状态码301和302的区别? 2 requests模块 模拟发送http请求 需要向携带头部的地址发送请求 自己服务器模拟requests使用 get请求携带参数 get请求携带header中的referer 携带cookie的两种方式 发送post请求携带数据的位置 响应对象response 解析json requests发送请求如何使用代理 总结 并发爬取某视频网站 1 爬虫介绍 1.1 爬取流程 爬取的都是http/https的数据,移动端的数据,发送请求获取数据,并不是只有python能做爬虫(任何语言都可以做爬虫),python比较便捷,模块多,上手快,爬虫框架scrapy 发送http请求(requests模块)-----》服务端返回数据(咱们要爬取的网站)-----》拿到数据解析(re,bs4)(json/html)------》入库保存 (文件,mysql,redis) ------》后续可以做分析 发送http请求:浏览器,浏览器会自动组装数据包(http的请求包),向服务端发送请求 自己基于socket来封装,比较复杂,原生python提供了urllib模块,有个人基于urllib模块继续封装,做了requests模块, 使用requests模块模拟发送http请求,有的时候爬不到数据,被禁止了,一定是你模拟的不够像,

python爬虫之selenium、phantomJs

蹲街弑〆低调 提交于 2020-03-02 20:01:18
图片懒加载技术 什么是图片懒加载技术 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。 如何实现图片懒加载技术 在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。 如何破解图片懒加载技术 其实很简单,在对标签属性进行定位的时候,仔细观察它真正的属性进行提取。 例如: import requests from lxml import etree def main(): responses = requests.get(url=url, headers=headers) coding = responses.apparent_encoding responses.encoding = coding res_text = responses.text # 创建etree对象 tree = etree.HTML(res_text) div_lst = tree

爬虫框架之selenium

假如想象 提交于 2020-03-02 20:00:53
Selenium 一、概述 Web自动化测试工具,可以运行在浏览器,根据指令操作浏览器 只是工具,必须与第三方浏览器结合使用 安装: Linux: sudo pip3 install selenium Windows: python -m pip install selenium phantomjs浏览器 定义:无界面浏览器(又称无头浏览器),在内存中进行页面加载,高效 安装(phantomjs、chromedriver、geckodriver) Windows: 1、下载对应版本的phantomjs、chromedriver、geckodriver 2、把chromedriver.exe拷贝到python安装目录的Scripts目录下(添加到系统环境变量) # 查看python安装路径: where python 3、验证 cmd命令行: chromedriver # 下载地址 # 查看浏览器版本:右上角-帮助-关于google Chrome # 网站中查看对应版本(notes.txt) chromedriver : 下载对应版本 http://chromedriver.storage.googleapis.com/index.html Linux: 1、下载后解压 tar -zxvf geckodriver.tar.gz 2、拷贝解压后文件到 /usr/bin/ (添加环境变量

Python爬虫之爬取小说章节目录

别说谁变了你拦得住时间么 提交于 2020-03-02 19:30:08
文章目录 1. 网络爬虫的定义 1.1 网络资源有哪些? 2. 开发爬虫的步骤 3. 小说章节链接爬取 1. 网络爬虫的定义 模拟浏览器自动的浏览网页 自动的批量的采集我们需要的网络资源 一个脚本(程序) 1.1 网络资源有哪些? 网页 图片 视频 音频 文件 2. 开发爬虫的步骤 目标数据(网站、页面) 分析数据加载流程(分析目标数据所对应的url) 下载数据 清洗,处理数据 数据持久化 3. 小说章节链接爬取 操作环境:python3.8.1 模块:bs4、requsets、re 操作代码: from bs4 import BeautifulSoup # 导入requests模块 import requests # 导入re(正则)模块 import re # 下载一个网页 url='https://book.qidian.com/info/1016572786' # 模拟浏览器发送http请求 response = requests.get(url) # 目标小说主页的网页源码 HTML = response.text # 获取小说的名字 title = re.findall(r'<em>(.*?)</em>',HTML)[0] # 新建一个文件,保存小说内容 fb = open('%s.txt' % title,'w',encoding='utf-8')

初学python爬虫,记录一下学习过程,requests xpath 提取图片并保存02

喜你入骨 提交于 2020-03-02 07:32:41
紧接上一次的首页图片保存,这篇是提取详情页的图片并保存,且第一页的地址又与以后的地址不一样,需要单独处理。 ''' requests库请求目标网址 xpath提取网页的图片地址 面向函数编程 提取首页与以面网页不一样的图片 ''' #导入第三方库 import requests from lxml import etree import time #useragent库 from fake_useragent import UserAgent #定义随机的UserAgent ua = UserAgent ( ) headers = { 'User-Agent' : ua . random } #定义得到html文本的函数 def get_html ( url ) : time . sleep ( 1 ) #如果用.text()则出现乱码的情况,所以采用utf-8方式解码 html = requests . get ( url , headers = headers ) . content . decode ( 'utf-8' ) return html #定义解析html的函数 def paser_html ( html ) : #新建空列表 images_url = [ ] e = etree . HTML ( html ) #提取图片地址 image_urls = e .

9行代码实现python爬虫入门

北城以北 提交于 2020-03-02 07:21:52
""" 通用爬虫:静态 聚焦爬虫:静态 增量式爬虫:实时爬取网站的最新数据。 Http协议:应用层协议 user-Agent 请求载体的信息 connection 请求完毕后,是断开还是保持连接 Content-type 服务器响应给客户端的数据类型 Https协议 安全的http协议。数据加密。 对称密钥 非对称密钥 证书密钥 :https采用的 URLlib模块,request模块是前者的高级版 作用:模拟浏览器发请求 1 指定URL 2 发起请求 3 获取响应数据 4 持久化存储 """ import requests if __name__=="__main__": #1 指定URL url = 'https://blog.csdn.net/LVGAOYANH' #发起请求 response = requests.get(url=url) #获取响应数据 page_text = response.text print(page_text) #持久化存储 with open("h:\\test.txt",'w',encoding='utf-8')as fp: fp.write(page_text) print("爬取数据完毕") 来源: CSDN 作者: 鹰立如睡 链接: https://blog.csdn.net/LVGAOYANH/article/details

python爬虫工程师 成长之路三 URLlib库和URLError处理

依然范特西╮ 提交于 2020-03-02 01:00:43
文章目录 URLlib库概述 使用URLlib爬取网页 urllib常用方法 浏览器伪装 获取浏览器Headers属性 使用build_opener()修改报头 使用add_header()添加报头 超时设置 http协议请求 代理服务器设置 DebugLog URLRrror URLlib库概述 URLlib是python提供的一个用于操作URL的模块,常用于爬取网页,python3.x中将python2.x中的URLlib和URLlib2合并成为新的URLlib。 使用URLlib爬取网页 导入URLlib.request import urllib . request 使用urllib.request.urlopen打开需要爬取的网站并用web接收一下 web = urllib . request . urlopen ( 'http://www.baidu.com' ) 读取网页内容 data = web . read ( ) #读取网页的全部内容 dataline = web . readline ( ) #读取网页的一行内容 查看网页内容 将网页存到本地 urlllib.request.urlretrieve(url,filename) url:网页的网址 filename:存放文件的地址与名称 urllib . request . urlretrieve ( 'http