最佳实践:python爬虫数据采集

优采云 发布时间: 2022-11-23 07:58

  最佳实践: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和正则表达式匹配数据

  3.动态网站

  如果使用第二种方式,下载的源码就是简单的html,源码中是没有数据的,因为这样的动态网站需要加载js,源码中才会有数据。对于此类网站,可以使用自动化测试工具selenium

  爬虫步骤:

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

  防捡机制:

  1.当系统判断属于同一个ip的客户端多次访问不间断时,会拒绝该ip的访问

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

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

  解决方案:利用python的第三方库(Faker)生成假的登录名、密码和*敏*感*词*,实现自动注册登录

  3、需要处理目标系统中目标数据页的链接,才能进入目标数据页进行访问

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

  从哪里获取目标数据:

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

  python爬虫常用的第三方库:

  urllib/requests 请求库

Faker 生成假数据

<p>

" />

UserAgent 生成假数据头

etree、beautsoup 匹配数据

json 处理json数据

re 正则库

selenium 自动化测试库

sqlite3 数据库 python3自带</p>

  抓取静态网页数据:

  import requests

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

from lxml import etree # 匹配数据

#爬取目标页面的url

url=&#39;http://***ip****:8085/pricePublic/house/public/index&#39;

headers= {&#39;User-Agent&#39;:str(UserAgent().random)}

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

# 获得网页源码

content=response.text

html=etree.HTML(content)

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

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

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

  import json

import requests

#获取返回的response

url=&#39;http://***ip***/FindById/22&#39;

response=requests.get(url)

<p>

" />

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

DataNode = json.loads(response.text).get(&#39;returndata&#39;).get(&#39;data&#39;)[0]</p>

  抓取动态数据:

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

  import requests

from faker import Faker

from fake_useragent import UserAgent

from lxml import etree

url=&#39;http://***ip***/FindById/22&#39;

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

fake=Fakeer(&#39;zh_CN&#39;)

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(爬虫协议)文件,里面规定了那些网页是可以访问的,并且在爬取公共信息数据的时候,不能对目标系统造成严重的破坏。因此,我们呼吁大家在使用各种技术开展工作的过程中,遵守各种技术法规和制度规范。,共同营造你我他文明的网络环境!

  解决方案:全套旧源码 [其他类别]新闻采集器源码_newsspider 带后端与使用说明

  压缩包全套旧源码 [其他类别] 新闻采集

器 源Code_newsspider 通过后端和使用说明,内部文件收录

  包中的文件 1: [其他类别] 新闻采集

器源代码 _newsspider/

  包中的文件 2: [其他类别] 新闻采集

器源代码

  _newsspider/[其他类别] 新闻采集

器源代码 _newsspider/

  包中的文件 3: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/

  包中的文件 4: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/App_Code/

  包中的文件 5: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/App_Code/新闻信息.cs

  包中的文件 6: [其他类别] 新闻采集

器源代码 _newsspider/

  

" />

  [其他类别] 新闻采集

器源代码_newsspider/NewsSpider/App_Code/NewsToData.cs

  包中的文件 7: [其他类别] 新闻采集

器来源 Code_newsspider /

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/DB/

  包中的文件 8: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/DB/新闻.mdf

  包中的文件 9: [其他类别] 新闻采集

器来源 Code_newsspider /

  [其他类别] 新闻采集

器源代码 _newsspider/NewsSpider/DB/News_log.ldf

  包中的文件 10: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/默认.aspx

  包中的文件 11: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/默认.aspx.cs包中的文件 12:[其他类别] 新闻采集

器源代码 _newsspider/

  

" />

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/新闻.aspx包中的文件 13:[其他类别] 新闻采集

器源代码_newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/新闻.aspx.cs包中的文件 14:[其他类别] 新闻采集

器源代码_newsspider /

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/新闻信息.aspx

  包中的文件 15: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/新闻信息.aspx.cs

  包中的文件 16: [其他类别] 新闻采集

器源 Code_newsspider/[其他类别] 新闻采集

器源代码 _newsspider/新闻蜘蛛/Web.config

  包中的文件 17: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码_newsspider/新闻蜘蛛/描述.txt

  包中的文件 18: [其他类别] 新闻采集 源代码 _newsspider /

  [其他类别] 新闻采集源代码_newsspider/新闻蜘蛛/新闻采集.sln包中的文件 19: [其他类别] 新闻采集

器源代码 _newsspider/

  [其他类别] 新闻采集

器源代码 _newsspider/新闻蜘蛛/源代码 需要.txt

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线