【零基础学爬虫】爬虫基本原理

什么是爬虫

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

  1. 发起请求:

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

2.获取响应内容

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

3.解析内容

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

4.保存数据:

可以存为文本,也可以保存到数据库或者特定格式的文件

request和response

爬虫

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上搜索,有详细的文档。
  • 另外还有使用:PyV8、Ghost.py等库

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

怎样保存数据

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

保存数据.png


扫描下方二维码,及时获取更多互联网求职面经javapython爬虫大数据等技术,和海量资料分享:公众号后台回复“csdn”即可免费领取【csdn】和【百度文库】下载服务;公众号后台回复“资料”:即可领取5T精品学习资料java面试考点java面经总结,以及几十个java、大数据项目资料很全,你想找的几乎都有
扫码关注,及时获取更多精彩内容。(博主今日头条大数据工程师)

猜你喜欢

转载自blog.csdn.net/liewen_/article/details/89377653