【一块儿学爬虫】爬虫基本原理

#什么是爬虫 请求网站,提取网页内容的最大化程序。获取到的是html代码,须要从这些文本中提取须要的数据html

  1. 发起请求:

向目标站点发送HTTP请求,即发送一个Request,请求能够包括额外的header等信息,等待服务器响应java

2.获取响应内容python

若是服务器正常,在第一步会返回一个response,response的内容即是所要获取的页面内容,类型可能有HTML,Json字符串、二进制数据(如图片视频)等类型。git

3.解析内容github

获得的内容多是HTML。可使用正则表达式、网页解析库进行解析。若是是json,则能够直接解析为json对象进行解析;若是是二进制数据,能够保存或者进一步的处理。web

4.保存数据:面试

能够存为文本,也能够保存到数据库或者特定格式的文件正则表达式

#request和response chrome

爬虫

#request中包含什么? 数据库

request.png

response中包含哪些东西?

response.png

#爬虫能够抓取什么样的数据?

内容.png

#获取到数据后,如何解析?

解析.png

#注意: 使用request.get('url')获得的只是第一个请求的内容,即当咱们执行:

import requests
response = requests.get('http://www.weibo.com')
print(response.text)#打印出的是第一个请求返回的代码
复制代码

即返回的是下图中红色方框中的代码:

微博.png

抓取到的数据和浏览器页面不同?

原生的html是不包括任何信息的,页面显示的信息是经过后续的js调用后台的接口拿到数据,js再把网页加载出来的。因此elements中的源代码和咱们拿到的源代码是不同的:

elements.jpg

如何解决这种JavaScript渲染问题?

  • 分析Ajax请求:Ajax请求返回的结果就是Json格式字符串
  • Selenium的WebDriver模拟或驱动一个浏览器网页,自动化测试根据。案例以下:
#pip install selenium
from selenium import webdirver
driver = webdriver.Chrom();#自动打开chrome浏览器
driver.get('www.weibo.com')#浏览器页面自动跳转到指定网址
print(driver.page_source)#获取到的源代码和浏览器页面的源代码一致,这是渲染后的页面源码,js渲染的问题就不存在了。
复制代码

这种方式的缺点是后台会自动运行chrome浏览器

  • Splash:和Selenium同样,都是用来模拟js渲染,能够是github上搜索,有详细的文档。
  • 另外还有使用:PyV八、Ghost.py等库

###解决JavaScript渲染问题的方案总结

js渲染问题.png

#怎样保存数据

  • 文本
  • 关系型数据库
  • 菲关系型数据库
  • 二进制文件

保存数据.png

资料分享

java学习笔记、10T资料、100多个java项目分享


欢迎关注我的公众号【菜鸟名企梦】,公众号专一:互联网求职面经javapython爬虫大数据等技术分享**: 公众号**菜鸟名企梦后台发送“csdn”便可免费领取【csdn】和【百度文库】下载服务; 公众号菜鸟名企梦后台发送“资料”:便可领取5T精品学习资料**、java面试考点java面经总结,以及几十个java、大数据项目资料很全,你想找的几乎都有

扫码关注,及时获取更多精彩内容。(博主今日头条大数据工程师)
相关文章
相关标签/搜索