网站程序自带的采集器采集文章(python爬虫数据的第一步必须分析目标网站的技术与目标数据)

优采云 发布时间: 2021-10-31 04:01

  网站程序自带的采集器采集文章(python爬虫数据的第一步必须分析目标网站的技术与目标数据)

  这几年python的火爆异常火爆!在大学期间,我也做了很多深入的学习。毕业后,我尝试使用python作为我的职业方向。虽然我没有如愿成为一名python工程师,但我对python的掌握也让我现在的工作发展和职业发展更加出色。便利。本文文章主要与大家分享我自己在python爬虫方面的收获和感悟。

  Python爬虫是最熟悉的python应用方式。因为python有丰富的第三方开发库,所以可以做很多工作:比如web开发(django)、应用开发(tkinter、wxpython、qt)、数据统计与计算(numpy)、图形图像处理、深度学习,人工智能等。我一般用python爬虫(结合tkinter开发爬虫应用),用django开发一些小个人网站。django框架可以根据实体类自动生成管理终端,大大提高了系统的开发效率,有兴趣的朋友可以试试。

  一个成功的爬虫需要对应一个标准化的网站。爬虫主要是为了方便我们获取数据。如果目标系统开发不规范、不规范,很难用爬虫自定义一套规则来爬取,而且爬虫基本上是定制的,需要针对不同的系统进行调整。

  爬虫爬取数据的第一步,必须分析目标网站的技术和网站的数据结构(通过前端源码)。您可以使用 chrome 浏览器。目前python爬虫主要会面对三种网站:

  1. 前后端分离网站

  前端通过参数访问接口,后端返回json数据。对于这种网站,python可以模拟浏览器前端,发送参数然后接收数据,完成爬虫数据目标

  2. 静态网站

  通过python的第三方库(requests、urllib)下载源码,通过xpath和regular进行数据匹配

  3.动态网站

  如果采用第二种方法,下载的源代码只是简单的html,源代码中没有数据,因为这样的动态网站需要在源代码中有数据之前加载js。对于这种类型的 网站 ,可以使用自动化测试工具 selenium

  爬虫步骤:

  分析网站技术和目标数据的结构。根据第一步,分析结构,选择相应的技术策略进行数据爬取,提高性能,提高操作舒适度(结合客户端技术,为爬虫定制接口)根据需要清理数据 数据存储,存储在数据库中,文件等

  防采摘机制:

  1. 当系统判断属于同一个ip的客户端有多次访问而没有中断时,会拒绝访问这个ip

  解决方法:动态代理,不断改变ip访问目标系统,或者从免费ip代理网站爬取ip,创建ip池,如果目标数据量不大,可以降低访问速度避免Reverse

  2. 目标系统需要注册登录才能访问

  解决方法:使用python的第三方库(Faker)生成假登录名、密码、*敏*感*词*,用于自动注册登录

  3. 需要对目标系统的目标数据页面的链接进行处理,然后才能进入目标数据页面进行访问

  解决方法:无法正常访问目标网站的目标数据页链接。需要研究页面中的js脚本,对链接进行处理。我个人用搜狗浏览器爬取微信账号文章,遇到过这个问题。爬取到的文章链接需要通过js脚本拼接才能得到正确的链接地址

  从哪里获取目标数据:

  通过xpath获取数据的位置,可以使用chrome浏览器调试功能通过正则匹配获取对应数据的xpath路径

  Python爬虫第三方常用库:

  urllib/requests 请求库

Faker 生成假数据

UserAgent 生成假数据头

etree、beautsoup 匹配数据

json 处理json数据

re 正则库

selenium 自动化测试库

sqlite3 数据库 python3自带

  抓取静态网页数据:

  import requests

from fake_useragent import UserAgent #提供假的请求头

from lxml import etree # 匹配数据

#爬取目标页面的url

url='http://***ip****:8085/pricePublic/house/public/index'

headers= {'User-Agent':str(UserAgent().random)}

response=requests.get(url,headers=headers)

# 获得网页源码

content=response.text

html=etree.HTML(content)

#使用xpath查找对应标签处的元素值,pageNum此处爬取对应页面的页码

pageNum=html.xpath('//*[@id="dec"]/div[2]/div/span[1]/text()')

  爬取前后端分离系统的数据:

  import json

import requests

#获取返回的response

url='http://***ip***/FindById/22'

response=requests.get(url)

#通过json库解析json,获得返回的数据

DataNode = json.loads(response.text).get('returndata').get('data')[0]

  爬取动态数据:

  以下代码示例使用谷歌浏览器,使用 selenium 库,并将浏览器设置为无头模式。爬虫会配合浏览器在后台模拟人工操作。爬虫会根据代码中定义的xpath地址,在浏览器中找到对应的位置。操作,使用selenium抓取数据时,需要安装相应版本的浏览器驱动

  import requests

from faker import Faker

from fake_useragent import UserAgent

from lxml import etree

url='http://***ip***/FindById/22'

#通过faker库获得假email和电话号码

fake=Fakeer('zh_CN')

email=fake.email()

tel=fake.phone_number()

data={

"email":email

}

#使用requests库发送post请求

response=requests.post(url,data,headers=headers)

code=response.status_code

content=response.text

#获得返回的cookies并转换为字典形式

cookies = requests.utils.dict_from_cookiejar(response.cookies)

#请求的时候带上cookies

response=requests.get(url,headers=headers,cookies=cookies)

  作为合法公民,爬虫只是一种技术。当我们使用它来抓取目标数据时,我们必须遵守一定的规则。每个网站的根目录下都会有robots.txt(爬虫协议)文件。,其中规定那些网页可以被访问,用于抓取公共信息和数据,并且不得对目标系统造成严重损害。因此,我们呼吁大家在使用各种技术开展工作的过程中要遵守各种技术。规章制度规范,共同为你我他创造文明的网络环境!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线