python 爬取_python入门实践:如何爬取自如数据

环境

Python

python --version

(mac自带)

brew install python

pip

pip --version

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能

curl https://bootstrap.pypa.io/get... -o get-pip.py

sudo python get-pip.py

安装依赖

pip freeze >package.txt

sudo pip install -r package.txt

启动

cd index

chmod a+x ziru_room.py

python ziru_room.py

思路分析

1.反反爬虫

一般公司都有安全部门,防止大规模的撞库或者带宽挤占,那爬取的时候肯定会被拦截,定位然后律师函警告。

所以我觉得一个爬虫系统最重要的就是反 反爬虫。

我们先分析一下,一般简单的反爬虫什么思路?

用户请求的Headers,用户行为,网站目录和数据加载方式

headers里面主要根据userAgent查重。userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。简单来说就是浏览器向服务器”表明身份“用的。

用户行为主要靠ip。ip的话不用讲了,和身份证号差不多,所以我们发起请求应该用动态的,同一ip多次访问就可能被拉入ip黑名单,而且会导弹定位到你的服务器所在位置。

第三个方式比较高端了,我这次没有展示。前两种是爬虫伪装成浏览器读取数据,但是第三种是模拟出一个浏览器进行用户点击提交等操作,它本身就是一个没有界面的浏览器,从填写表单到点击按钮再到滚动页面,全部都可以模拟。这时候就可以根据一些其它方式,如识别点触式(12306)或者滑动式的验证码。

整理好思路开始实现,我们的目标是实现一个动态的ip和userAgent池,每次请求伪装成不一样的来源

step1: 我们去爬取一个开放代理ip的网站。。。然后试试他开放的ip可不可用,可用的话加入我们的ip池。 详见 代码 ziru_room.pyd0a91b7af610d69f9364b4236adf3b5c72c30984.png

1a015ce3b9d1564d0c22fe34a0a5e997f3568dcd.png

step2: 构造userAgent池d3bef186c7a47665155c4bbc301da35fb32c579b.png

这个不像ip会经常挂,所以写死问题不大。

2.爬取数据

我们的原材料准备好了,开始爬取,可以看见用的是random.choice()去ip,userAgent池取得随机配置 组成 get请求。详见 代码 ziru_room.py7e3e8ae7ebd2a91a80db003dba25fa51cce8b68d.png

3.其他部分

因为爬取可用的ip组成ip池,是一个比较耗时的过程,所以加入了图像化的等待显示,详见 代码 process.py5efd54e68d08e4ba68db0041fae1a4d378ec432c.png

自动化爬取要有点节操,所以得加入延时,详见 代码 ziru_room.py

while(True):

computedData(usefulIp, userAgent)time.sleep(60)

python 一点其他感触,写起来很简洁,这个换行缩进还有dict对象中文Unicode搞了很久。。。目前和node相比优缺点在哪里还没有分析好,可以留言探讨下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想了解如何用 Python 历史天气数据,是吗? 首先,需要确定您想要哪个地区的历史天气数据。一般来说,可以通过查询该地区的气象局或气象网站获历史天气数据。 接着,可以使用 Python 中的 requests 库来发送 HTTP 请求,获网页源代码。然后,可以使用 BeautifulSoup 库来解析网页源代码,提出所需的天气数据。 以下是一个简单的示例代码,用于中国天气网上北京市 2019 年 1 月份的历史天气数据: ``` python import requests from bs4 import BeautifulSoup url = 'http://www.weather.com.cn/weather/101010100.shtml#dt' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} r = requests.get(url, headers=headers) r.encoding = 'utf-8' soup = BeautifulSoup(r.text, 'html.parser') weather_list = soup.select('.t li') for weather in weather_list: date = weather.select('.time')[0].text weather_detail = weather.select('.temp')[0].text.strip() print(date, weather_detail) ``` 以上代码中,我们首先通过 requests 库发送了一个 GET 请求,获了北京市天气网的网页源代码。然后,使用 BeautifulSoup 库解析网页源代码,提出了 2019 年 1 月份的天气数据,并打印输出了日期和天气详情。 需要注意的是,不同的网站网页结构不同,需要根据具体情况修改代码。同时,需要注意网站的 robots.txt 文件,不要过度访问网站,以免被封 IP 或其他限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值