python爬虫

初探python爬虫(四)——xpath

南笙酒味 提交于 2020-02-06 21:17:29
在爬虫时可以使用xpath做相应的信息抽取 xpath常用规则 表达式 描述 nodename 选取此接待你的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 … 选取当前子节点的父节点 @ 选取属性 安装 cmd-》pip3 install lxml 实例 ##第一种方式,直接再python代码中解析html字符串 #导入lxml,下面两句话相当于from lxml import etree #只不过在python之后的lxml模块中不再能直接应仍有etree模块 from lxml import html etree = html.etree text=''' <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表单验证01</title> </head> <body> <ul> <li><a href ="/a/b/c/java/" >java</a></li> <li><a href ="/a/b/c/python/" >python</a></li> <li><a href ="/a/b/c/ai/" >ai</a></li> </ul> </body> </html> ''' #使用etree解析html中的字符串 html = etree

初探python爬虫(一)-get请求

我只是一个虾纸丫 提交于 2020-02-06 19:58:58
爬虫步骤 确定需求 寻找需求 发送请求 解析数据 存储数据 请求方式:GET和POST GET是默认的HTTP请求方式,用于直接输入网址的方式去访问网页 POST方法主要是像Web服务器提交表单数据,通常扁担提交时采用POST方法 GET把请求参数包含在url中,POST通过请求体传递参数 GET相对POST不安全,参数直接暴露在url上,不用来传递敏感信息 requests 安装:pip install requests import requests #定义请求的url url = 'https://www.baidu.com/' #定义请求头信息 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36' } #发起Get请求 res = requests.get(url=url,headers=headers) #获取相应状态码,当响应状态码为200 时则表示请求成功 code = res.status_code print(code) #相应成功后把相应的内容加入文件中 if code ==200: with open ('E:/Learn

python——爬取网页定向爬虫(6)

此生再无相见时 提交于 2020-02-06 07:15:42
定向爬虫 定义:定向爬虫可以精准的获取目标站点信息。 仅对输入URL进行爬取 ,不拓展爬取。 【实例练习】 【中国的大学排名爬取】 1 查看网页是否对爬虫有限制 1.查看 robots.txt 无robots.txt文件说明无爬虫限制 2.查看原网页 要提取的信息被封装在html内 2.程序的结构设计 步骤1:从网络上获取大学排名网页内容 步骤2:提取网页内容中信息到合适的数据结构(二维数据) 步骤3:利用数据结构展示并输出结果 属于二维数据 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' ) .

爬虫_chap1网络请求

蓝咒 提交于 2020-02-06 05:29:35
文章目录 爬虫_chap1网络请求 01.前奏 准备工具: 通用/聚焦 02.http和https协议: url详解:scheme,host,port,path,query-string,anchor 常用的请求方法:get获取, post上传 请求头header常见参数:user-angent,referer,cookie 常见响应状态码: 03.urllib库 urlopen函数:得到response,默认请求get,设置data成为post urlretrieve函数:下载到本地 urlencode函数:把字典数据转换为`URL`编码的数据 parse_qs函数:解码 urlparse和urlsplit:分割组分为scheme,netloc,path,query,params等 request.Request类:用自定义请求头发送请求(request.urlopen) 内涵段子爬虫实战作业: ProxyHandler处理器(代理设置):用自定义opener来使用代理 什么是cookie: cookie的格式: 使用cookielib库和HTTPCookieProcessor模拟登录: http.cookiejar`模块`: 登录人人网: 保存cookie到本地: 从本地加载cookie: 04.requests库 安装和文档地址: 发送GET请求: 发送POST请求:

爬虫(四):xpath

给你一囗甜甜゛ 提交于 2020-02-06 05:28:28
一、什么是xml 1、定义:可扩展标记性语言 2、特点:xml的是具有自描述结构的半结构化数据。 3、作用:xml主要设计宗旨是用来传输数据的。它还可以作为配置文件。 二、xml和html的区别 1、语法要求不同 xml的语法要求更严格。 html不区分大小写,xml区分。 html有时可以省略尾标签。xml不能省略任何标签,严格按照嵌套首尾结构。 只有xml中有自闭标签(没有内容的标签,只有属性。) <a class='abc'/> 在html中属性名可以不带属性值。xml必须带属性值。 在xml中属性 必须用引号括起来,html中可以不加引号。 2、作用不同 html 主要设计用来显示数据以及更好的显示数据。 xml 主要设计宗旨就是用来传输数据。 3、标记不同 xml 没有固定 标记,html的标记都是固定的,不能自定义。 三、xpath 1、什么是xpath xpath 是一种筛选 html或者xml页面元素的【语法】。 2、xml和html的一些名词 3、xml的两种解析方法 4、xpath语法 (1)选取节点 nodename 选取此标签及其所有子标签 / 从根节点开始选取 // 从任意节点开始,不考虑他们的位置。 . 当前节点开始找。 … 当前节点的父节点 @ 选取属性 text() 选取内容 (2)谓语 【谓语】:起限定的作用,限定他前面的内容。 [ ]写在谁的后面

python高级爬虫笔记(1)

故事扮演 提交于 2020-02-05 21:34:34
写在前面 selenium 虽然是新手友好型的爬虫工具,但是个人觉得绝对不是适合新手入门的爬虫。 推荐在了解了 requests体系 的爬虫,有了爬虫的一些常识之后,再来看selenium。 事实上,requests体系的爬虫已经足够满足现阶段大多数网站的爬虫需求 关于Selenium Selenium诞生于2014年,创造者是ThoughtWorks公司的测试工程师Jason Huggins。创造Selenium的目的就是做自动化测试,用以检测网页交互,避免重复劳动。 这个工具可以用来自动加载网页,供爬虫抓取数据。 官方文档 安装 从 这里 下载chromedriver 注意:与目前正在使用的Chrome版本相一致 补充:对于macOS用户,可以把该文件放到 /usr/local/bin/ 目录下,可以省去一些的配置烦恼 pip install selenium 使用 设置配置 option = webdriver.ChromeOptions() option.add_argument(‘headless’) 添加驱动 driver = webdriver.Chrome(chrome_options=option) 牛刀小试 # 与百度首页交互 from selenium import webdriver from selenium . webdriver . support .

python高级爬虫笔记(2)

坚强是说给别人听的谎言 提交于 2020-02-05 21:09:16
提高爬虫效率主要从三个方面开始复习。 并发 ip cookies 并发必然引发的一个结果就是反爬虫机制,这种时候爬虫的效率不会因为并发而提高,反而会因为网站的防御机制拖累爬虫的速度。 自然而然地就引出了2,代理爬虫。代理爬虫能够从多个ip发送请求,减小了单个ip的请求频率,自然触发反爬虫机制的概率也就小了很多。 但是新的问题又出现了,对于需要 登录 的网站,需要提交cookies来模拟登录情况,模拟登录不难,但是同一个cookies从不同的ip同时发送请求很明显不合常理,依然会触发反爬虫机制。 这是到目前为止我所遇到的影响爬虫效率的问题,就在这里做一个总结吧,如果后续遇到新的效率相关的问题,再做补充。 并发 前言 在2019年,我阅读了python cookbook,其中对这一方面有较为详细且透彻的讲述,比较适合有python基础的人学习。 多进程、多线程是python程序员的必修课之一。因为,即使脱离了爬虫,机器学习、web开发等方面,多线程、多进程依旧有着举足轻重的地位。 这是开发者的一个小分水岭,它在一定程度上决定了程序效率的高低。 python中的多进程方法 多线程、多进程、协程爬虫 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程

python极其简单的爬虫妹子图

安稳与你 提交于 2020-02-05 06:40:49
1、 目标网站地址 :http://sc.chinaz.com/tupian/meinvtupian.html 2、分析第2页的url: 3、源码展示: from lxml import etree import requests import urllib . request imgs = [ ] #获取图片列表 def getAllsrc ( url ) : res = requests . get ( url ) html = etree . HTML ( res . text ) result = html . xpath ( '//a[@target="_blank"]/img' ) for temp in result : img = temp . attrib . values ( ) [ 0 ] ; imgs . append ( img ) #下载图片-urllib.request- def downlocal ( ) : num = 0 path = "D:/Temp/images/" for imgurl in imgs : num += 1 print ( "正在下载第 " + str ( num ) + " 个图像" ) try : urllib . request . urlretrieve ( imgurl , '{0}{1}.jpg' .

Python爬虫学习笔记(Requests库补充)

血红的双手。 提交于 2020-02-05 03:46:27
import requests # 引入库 r = requests.get( 'https://www.baidu.com' ) # 得到 Response 对象 print ( type (r)) #Response 类型 print (r.status_code) # 状态码 print ( type (r.text)) # 响应体类型 print (r.text) # 抓取网页内容 print (r.cookies) # 抓取 cookie import requests # 引入库 data = { 'name' : 'germey' , 'age' : 22 } r = requests.get( 'https://httpbin.org/get' , params =data) print (r.text) # 调用 json 方法以字典的方法打印 , 字符格式转化为字典格式 print ( type (r.text)) print (r.json()) print ( type (r.json())) #下载github选项栏图标:使用get请求 import requests r = requests . get ( 'https://github.com/favicon.ico' ) with open ( 'D:favicon.ico' , 'wb' ) as

python学习-----爬虫技巧

本小妞迷上赌 提交于 2020-02-05 03:32:32
文章目录 requests模块 爬取百度的源代码并保存到本地。 关于url中的请求参数来执行具体请求。 发送post请求 反反爬虫 处理cookie requests模块 爬虫的动作都是在对应你想要的网页源代码里抓取的 本质是模拟客户的请求,接收对方的网络响应,按照程序员的要求抓取对应的信息 (理论上浏览器能做的,爬虫都能做) 爬虫分类: 通用爬虫: 搜索引擎的爬虫 聚焦爬虫: 针对特定网站的爬虫 搜索引擎的工作原理: 爬取网页–存储数据–预处理–提供搜索和排名服务 对网站发起请求的种类 get 浏览器输入框里的请求 post 表单输入 爬取百度的源代码并保存到本地。 import requests def main ( ) : url = "https://www.baidu.com" headers = { "User-Agent" : "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" } responses = requests . get ( url , headers = headers ) #带header的请求 #print(responses.content)