Python爬虫练习——爬取代理IP(1)

本文介绍了使用Python 3.8进行爬虫练习,抓取并验证代理IP的过程。通过requests和lxml库解析网页,利用fake_useragent设置浏览器头部,将爬取和验证代理IP的方法封装,最后将验证成功的IP存储到JSON文件中。虽然验证了4个有效IP,但整个过程耗时287秒,效率较低,作者计划在后续文章中引入多线程来提高爬取效率。
摘要由CSDN通过智能技术生成

根据网上的一些教程,尝试爬取代理IP,并提供验证
本文仅供个人练习使用,不定期添加解释(python 3.8)

一、 工具准备

爬取代理IP,首先需要准备:

  1. python
  2. requests 库
  3. fake_useragent 库(可选)
  4. lxml 库
  5. 代理 ip 网页
  6. 验证 ip 网页

本次采用python 3.8版本;requests库 2.22 版本,requests 库是网页爬虫的常用库;fake_useragent 库 0.1 版本,用于设置浏览器;lxml 库 4.5 版本,用于解析页面。
代理 ip 网页:西祠代理,也可以用其他的页面,度娘一大堆。
验证 ip 网页:验证ip,会返回一个带有ip信息的页面。

二、必要包导入

首先导入几个必要的包:

import requests
import time
import json

from fake_useragent import UserAgent
from lxml.html import etree

time 包用于设置爬取延迟(减轻对方服务器压力),json 包用于读写json格式数据,etree 模块用于xpath解析路径
注意: lxml 4.5 以前的版本,导入etree模块可能的方式为

from lxml import etree

三、页面爬取和解析

1.页面爬取

把页面的爬取封装到get_page()方法里,用requests库最常用的get方法获取页面html代码,实例化UserAgent(),随机生成一个chrome浏览器

 UA=UserAgent()
 H = {
   
  'user-agent': UA.chrome
 }
 re = requests.get(url = url,headers = H)

url的设置需要注意,为了能够爬取到多页数据,经过观察不难发现,url的换页有规律,即最后的数字

url = f'https://www.xicidaili.com/nn/{pg}'

pg是get_page()方法的一个形参,传入页数

2.页面解析

同样封装在parse_page()方法中,etree模块解析页面,xpath方法获取目标ip和端口。这里需要注意的是xpath路径中,标签的索引是从 1 而不是0开始的。

ip = Html.xpath('//tr/td[2]/text()')
duan = Html.xpath('//tr/td[3]/text()')

结果会返回一个列表,ip和端口组合后,返回

三、代理验证和数据更新

1.代理验证

封装在check_ip()方法中,用requests库get方法,循环验证ip。timeout是设置请求的最大次数,加快验证速度,如果仍请求失败就返回一个错误,利用 try/except 捕获。

 proxie = {
   
            'http' : 'http://' + ip,
            'https': 'https://' + ip
        }
re = requests.get(url = url, headers = headers, proxies = proxie, timeout = 3)

注意:这里的 ip 是和端口组合后的字符串,url是验证的网址

2.数据更新

验证成功的数据,依次写入json文件当中,以便日后使用提取

with open('xici_IP_pool.json'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值