网页源代码抓取工具(.1请求方式及相关工具解析(2015年03月23日))

优采云 发布时间: 2022-04-18 19:12

  网页源代码抓取工具(.1请求方式及相关工具解析(2015年03月23日))

  请求收录:请求头、请求体等。

  2.2 获取响应内容

  如果服务器能正常响应,就会得到一个Response

  响应收录:html、json、图片、视频等。

  2.3 内容类型分析及相关工具

  解析html数据:正则表达式、Beautifulsoup、pyquery等第三方解析库。

  解析json数据:json模块

  解析二进制数据:作为 b 写入文件

  2.4 保存数据

  根据需要将数据保存到数据库或文件

  三、请求和响应

  

  ps:浏览器收到Response后会解析其内容展示给用户,爬虫程序模拟浏览器发送请求再接收Response后提取有用数据。

  四、请求4.1 请求方法

  ​ 常用请求方式:GET、POST

  ​ 其他请求方式:HEAD、PUT、DELETE、OPTHONS

  ps:用浏览器演示get与post的区别,(用登录演示post)

1 post与get请求最终都会拼接成这种形式:k1=xxx&k2=yyy&k3=zzz

2 post请求的参数放在请求体内,可用浏览器查看,存放于form data内

3 get请求的参数直接放在url后

  4.2 请求地址

  ​ url的全称是Uniform Resource Locator,比如网页文档、图片、视频等都可以由url唯一确定

  url编码:https://www.baidu.com/s?wd=图片

  网页的加载过程是:加载一个网页,通常都是先加载document文档,在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求

  4.3 请求头

  ​ User-agent:如果请求头中没有user-agent客户端配置,服务器可能会将你视为非法用户

  ​ host:客户端指定要访问的http服务器的域名/IP地址和端口号

  ​ cookie:cookie用于存储登录信息

  一般做爬虫都会加上请求头

  4.4 请求正文

  ​ 如果是get方法,请求体没有内容

  ​ 如果是post方式,请求体为格式数据

  ps:

1、登录窗口,文件上传等,信息都会被附加到请求体内

2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post

  #示例:

from urllib.parse import urlencode

import requests

headers={

\'Accept\':\'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\',

\'Cookie\':\'H_WISE_SIDS=101556_115474_115442_114743_108373_100099_115725_106201_107320_115339_114797_115553_116093_115546_115625_115446_114329_115350_114275_116040_110085; PSTM=1494300712; BAIDUID=42FE2934E37AF7AD1FA31D8CC7006D45:FG=1; BIDUPSID=2996557DB2710279BD865C50F9A68615; MCITY=-%3A; __cfduid=da9f97dea6458ca26aa4278280752ebb01508939712; BDSFRCVID=PGLsJeCCxG3wt_3ZUrBLDfv2D_qBZSjAgcEe3J; H_BDCLCKID_SF=tJAOoCLytI03qn5zq4Oh-4oHhxoJq5QxbT7Z0l8KtfcNVJQs-lCMhbtp-l3GJPoLWK6hBKQmWIQHDnbsbq0M2tcQXR5-WROCte74KKJx-4PWeIJo5tKh04JbhUJiB5OLBan7Lq7xfDDbbDtmej_3-PC3ql6354Rj2C_X3b7EfKjIOtO_bfbT2MbyeqrNQlTkLIvXoITJQD_bEP3Fbfj2DPQ3KabZqjDjJbue_I05f-oqebT4btbMqRtthf5KeJ3KaKrKW5rJabC3hPJeKU6qLT5Xjh6B5qDfyDoAbKOt-IOjhb5hMpnx-p0njxQyaR3RL2Kj0p_EWpcxsCQqLUonDh8L3H7MJUntKjnRonTO5hvvhb6O3M7-XpOhDG0fJjtJJbksQJ5e24oqHP-kKPrV-4oH5MQy5toyHD7yWCvjWlT5OR5Jj6KMjMkb3xbz2fcpMIrjob8M5CQESInv3MA--fcLD2ch5-3eQgTI3fbIJJjWsq0x0-jle-bQypoa-U0j2COMahkMal7xO-QO05CaD53yDNDqtjn-5TIX_CjJbnA_Hn7zepoxebtpbt-qJJjzMerW_Mc8QUJBH4tR-T3keh-83xbnBT5KaKO2-RnPXbcWjt_lWh_bLf_kQN3TbxuO5bRiL66I0h6jDn3oyT3VXp0n54nTqjDHfRuDVItXf-L_qtDk-PnVeUP3DhbZKxtqtDKjXJ7X2fclHJ7z-R3IBPCD0tjk-6JnWncKaRcI3poiqKtmjJb6XJkl2HQ405OT-6-O0KJcbRodobAwhPJvyT8DXnO7-fRTfJuJ_DDMJDD3fP36q4QV-JIehmT22jnT32JeaJ5n0-nnhP3mBTbA3JDYX-Oh-jjRX56GhfO_0R3jsJKRy66jK4JKjHKet6vP; ispeed_lsm=0; H_PS_PSSID=1421_24558_21120_17001_24880_22072; BD_UPN=123253; H_PS_645EC=44be6I1wqYYVvyugm2gc3PK9PoSa26pxhzOVbeQrn2rRadHvKoI%2BCbN5K%2Bg; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598\',

\'Host\':\'www.baidu.com\',

\'User-Agent\':\'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36\'}

# response=requests.get(\'https://www.baidu.com/s?\'+urlencode({\'wd\':\'美女\'}),headers=headers)

response=requests.get(\'https://www.baidu.com/s\',params={\'wd\':\'美女\'},headers=headers) #params内部就是调用urlencode

print(response.text)

  五、Response5.1 普通响应状态码

  详情见博客:#%E4%B8%83%E3%80%81%E7%8A%B6%E6%80%81%E7%A0%81

  ​ 200:代表成功

  ​ 301:代表跳跃

  ​ 404:文件不存在

  ​ 403:权限

  ​ 502:服务器错误

  5.2 响应头

  ​ set-cookie:可能有多个,告诉浏览器保存cookie

  5.3预览是网页的源代码

  ​ 主要部分收录请求资源的内容,如网页html、图片、二进制数据等。

  六、总结6.1 总结爬虫流程

  ​ 抓取--->解析--->存储

  6.2 爬虫所需的工具

  ​ 请求库:requests, selenium

  ​ 解析库:regular、beautifulsoup、pyquery

  ​ 存储库:文件、MySQL、Mongodb、Redis

  6.3 常用爬虫框架

  1、Scrapy:Scrapy 是一个应用程序框架,用于抓取 网站 数据并提取结构化数据。它可以用于一系列程序,包括数据挖掘、信息处理或存储历史数据。是一个非常强大的爬虫框架,可以满足简单的页面爬取,比如可以清楚知道url格式的情况。使用此框架可以轻松爬取亚马逊列表等数据。但是对于稍微复杂一点的页面,比如微博的页面信息,这个框架就不能满足需求了。它的特点是:HTML、XML源数据选择和内置的提取支持;提供了一系列可重用的过滤器(即Item Loaders)在spider之间共享,并为爬取数据的智能处理提供内置支持。

  2、Crawley:高速爬取网站对应的内容,支持关系型和非关系型数据库,数据可以导出为JSON、XML等。

  3、Portia:是一款开源的可视化爬虫工具,用户无需任何编程知识即可爬取网站!只需对您感兴趣的页面进行注释,Portia 就会创建一个爬虫来从相似页面中提取数据。简单来说就是基于scrapy内核;在没有任何开发专业知识的情况下直观地抓取内容;动态匹配同一模板的内容。

  4、newspaper:可用于新闻提取、文章和内容分析。使用多线程,支持 10 多种语言等。作者从 requests 库的简单性和强大功能中汲取灵感,这是一个用 Python 开发的可用于提取 文章 内容的程序。支持10多种语言,全部采用unicode编码。

  5、Python-goose:一个用Java编写的文章提取工具。Python-goose 框架可以提取的信息包括:文章 主内容、文章 主图像、文章 中嵌入的任何 Youtube/Vimeo 视频、元描述、元标记。

  6、美汤:很有名,集成了一些常见的爬虫需求。它是一个 Python 库,可以从 HTML 或 XML 文件中提取数据。它支持通过您最喜欢的转换器导航、查找和修改文档的惯用方式。Beautiful Soup 将为您节省数小时甚至数天的工作时间。Beautiful Soup 的缺点是不能加载 JS。

  7、mechanize:有加载JS的优势。当然,它也有缺点,例如严重缺乏文档。但是通过官方的例子和人肉尝试的方法,还是勉强能用。

  8、selenium:这是一个调用浏览器的驱动程序。有了这个库,你可以直接调用浏览器完成某些操作,比如输入验证码。Selenium 是一种自动化测试工具。支持多种浏览器,包括Chrome、Safari、Firefox等主流界面浏览器。如果在这些浏览器中安装 Selenium 插件,就可以轻松实现 Web 界面测试。Selenium 支持浏览驱动器。Selenium支持多种语言开发,如Java、C、Ruby等。PhantomJS用于渲染和解析JS,Selenium用于驱动和与Python接口,Python用于后处理。

  9、cola:是一个分布式爬虫框架。对于用户来说,只需要写几个具体的函数,不需要关注分布式操作的细节。任务自动分发到多台机器上,整个过程对用户透明。项目整体设计有点差,模块之间耦合度高。

  10、PySpider:一个强大的网络爬虫系统,一个中国人写的,强大的WebUI。用 Python 语言编写,分布式架构,支持多种数据库后端,强大的 WebUI 支持脚本编辑器、任务监视器、项目管理器和结果查看器。Python脚本控件,可以使用任何你喜欢的html解析包。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线