Kafka Linux软件安装 微信小程序教程 MongoDB 二叉树排序 状态模式 firebase compilation 郑州小程序公司 pmp视频教程 多店版微信商城 css获取最后一个元素 short几个字节 spark数据清洗 mysql升序 python解析json数据 python安装配置 python位运算 python怎么下载安装 python入门例子 java基础 java中的抽象类 java手册 java匿名对象 java多线程教程 java接口的修饰符 linux用户管理 linux简介 linux远程 php项目实例 java游戏制作 flash相册制作 linux命令详解词典 微信助力软件 微信超级好友 cmd代码 福昕阅读器绿色版 心理学与生活pdf 美国地址生成器 黑市商人
当前位置: 首页 > 学习教程  > python

Scrapy爬虫实战—爬取代理IP并实现数据清洗

2021/2/6 22:22:27 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

目标网址:开心代理 温馨提示:现在免费代理几乎都用不了,真正做爬虫的小伙伴还是老老实实交点钱买吧! 本文章主要是爬虫学习交流! 查看网页源代码: 是个静态网站,就不用做以下分析了&#xff0c…

目标网址:开心代理
温馨提示:现在免费代理几乎都用不了,真正做爬虫的小伙伴还是老老实实交点钱买吧!
本文章主要是爬虫学习交流!
在这里插入图片描述
查看网页源代码:在这里插入图片描述
是个静态网站,就不用做以下分析了,直接Scrapy项目创建:
命令行

scrapy startproject happlyip
cd happly
scrapy genspider -t crawl happly 开心代理
在这里插入图片描述
编写爬虫happly.py 完成后:

mport scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from HAPPLYIP.items import HapplyipItem

class HapplySpider(CrawlSpider):
    name = 'happly'
    allowed_domains = ['www.kxdaili.com']
    start_urls = ['http://www.kxdaili.com/dailiip.html']

    rules = (
        Rule(LinkExtractor(allow=r'http://www.kxdaili.com/dailiip/\d/\d.html'), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        item = {}
        results = response.xpath('//div[@class="hot-product-content"]//tr')
        for result in results:
            item["IP"] = result.xpath('//td[1]/text()').get().split()[0]
            item["PORT"] = result.xpath('//td[2]/text()').get().split()[0]
            item["PLACE"] = result.xpath('//td[6]/text()').get().split()[0]
            yield item

主要是数据处理pipelines.py :
处理库:pandas
保存格式:.csv

ter import ItemAdapter
import pandas as pd 
import csv 
class HapplyipPipeline:
    def open_spider(self,spider):
    #创建csv文件
        self.f = open('happyip.csv',"a",encoding="utf-8")
        #文件头
        header = ["IP地址","端口号","地区"]
        self.f_csv = csv.writer(self.f)
        self.f_csv.writerow(header)
    def process_item(self, item, spider):
    #数据写入
        self.f_csv.writerows([(item["IP"],item["PORT"],item["PLACE"])])

    def close_spider(self,spider):
    	#这里需要先关闭文件,释放内存,不然会报错:FlieError 无法找到文件
        self.f.close()
        data = pd.read_csv('happyip.csv',header=0)
        pd_data = pd.DataFrame(data)
        #去除空值
        f= pd_data.dropna()
        #去除IP重复列
        f = pd_data.drop_duplicates(["IP地址"])
        #保存到新文件
        f.to_csv('happyip1.csv')

运行:
scrapy crawl happly
在这里插入图片描述
成功!
处理前:
在这里插入图片描述
处理后:
在这里插入图片描述
就这么多而已,而且不知道还有没有用,可以测试一下:
代理IP测试


本文链接: http://www.dtmao.cc/news_show_2000032.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?