Python批量爬取代理ip,并自动插入到Excel表格!

本文介绍了如何使用Python的requests和lxml库,结合XPath解析,从66IP网站批量爬取IP代理信息,并将数据整合成列表,最终存储为CSV文件。通过URL规律动态生成每页的链接,实现多页爬取。代码简洁易懂,适合初学者学习爬虫实践。
摘要由CSDN通过智能技术生成

思路:

以“http://www.66ip.cn/”网址为例,使用requests访问,通过xpath解析相关标签数据,将数据以列表的形式提取出来组成新的列表,然后再插入表格。然后再通过每页跳转时URL的变化规律进行URL重组后,进行循环访问爬取。

推荐安装xpath插件,直接将相关标签的数据xpath路径复制即可查看变化,如下图:


附上完整代码:

import requests
from lxml import etree
import pandas as pd
import json

#需要爬取的网址
#base_url = "http://www.66ip.cn/"
#定义存放所有页面URL的列表
all_urls = []
#以10页为例,根据规律拼写每页的URL,变化的只是数字,所以使用format函数来实现数字传参
for i in range(1,11):
    create_url = 'http://www.66ip.cn/{}.html'.format(i)
    all_urls.append(create_url)
#此处可以打印all_url查看是否成功
#print(all_urls)

#定义函数,通过xpath获取数据
def get_result(data):
	#定义存放每一个ip列表
    all_xpath = []
    for i in range(1,12):
    	#得到每个ip列表的,并追加到all_xpath列表中
        base_xpath = '//*[@id="main"]/div/div[1]/table//tr[{}]//text()'.format(i)
    #     print(base_xpath)
        all_xpath.append(base_xpath)
    
    results = []
    # for循环使用enumerate,enumerate()函数将可遍历的数据对象(如:列表、元组、字典)组合为一个“索引序列”,同时列出数据与下标
    for index, item in  enumerate(all_xpath):
        res = data.xpath(item)
        if index == 0 or not res:
            continue
        else:
            results.append(res)
           # print(results)
    return results

# 每页循环爬取数据
results = []
for url in all_urls:
    response = requests.get(url)
#     print(url)
    text = response.content
    # print(text)
    data = etree.HTML(text)
    res = get_result(data)
    results.append(res)

# 将获取的每页数据合并在一起
results = sum(results, [])
# 插入数据,并定义表格列名
file = pd.DataFrame(data=results, columns=['ip', '端口号', '代理位置', '代理类型', '验证时间'])
# 保存表格到本地路径,并命名文件名
file.to_csv('全世界ip代理.csv',index=False, header=True, encoding='utf-8-sig')

结果图如下:

 

再也不用担心被封IP了!

完整代码获取点这里即可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值