国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Scrapy框架爬取西刺代理網免費高匿代理的實現代碼

2020-02-16 01:19:50
字體:
來源:轉載
供稿:網友

分析

需求:

爬取西刺代理網免費高匿代理,并保存到MySQL數據庫中。

這里只爬取前10頁中的數據。

思路:

    分析網頁結構,確定數據提取規則 創建Scrapy項目 編寫item,定義數據字段 編寫spider,實現數據抓取 編寫Pipeline,保存數據到數據庫中 配置settings.py文件 運行爬蟲項目

代碼實現

items.py

import scrapyclass XicidailiItem(scrapy.Item):  # 國家  country=scrapy.Field()  # IP地址  ip=scrapy.Field()  # 端口號  port=scrapy.Field()  # 服務器地址  address=scrapy.Field()  # 是否匿名  anonymous=scrapy.Field()  # 類型  type=scrapy.Field()  # 速度  speed=scrapy.Field()  # 連接時間  connect_time=scrapy.Field()  # 存活時間  alive_time=scrapy.Field()  # 驗證時間  verify_time=scrapy.Field()

xicidaili_spider.py

# !/usr/bin/env python# -*- coding:utf-8 -*-import scrapyfrom myscrapy.items import XicidailiItemclass XicidailiSpider(scrapy.Spider):  name = 'xicidaili'  allowed_domains=['www.xicidaili.com']  # start_urls=['http://www.xicidaili.com/nn/1']  def start_requests(self):    urls=[]    for i in range(1,11):      urls.append('http://www.xicidaili.com/nn/'+str(i))    for url in urls:      yield scrapy.Request(url,callback=self.parse,method='GET')  def parse(self, response):    tr_list=response.xpath('//table[@id="ip_list"]/tr')    for tr in tr_list[1:]: # 過濾掉表頭行      item=XicidailiItem()      item['country']=tr.xpath('./td[1]/img/@alt').extract_first()      item['ip']=tr.xpath('./td[2]/text()').extract_first()      item['port']=tr.xpath('./td[3]/text()').extract_first()      item['address']=tr.xpath('./td[4]/a/text()').extract_first()      item['anonymous']=tr.xpath('./td[5]/text()').extract_first()      item['type']=tr.xpath('./td[6]/text()').extract_first()      item['speed']=tr.xpath('./td[7]/div/@title').re(r'/d{1,3}/./d{0,}')[0]      item['connect_time']=tr.xpath('./td[8]/div/@title').re(r'/d{1,3}/./d{0,}')[0]      item['alive_time']=tr.xpath('./td[9]/text()').extract_first()      item['verify_time']=tr.xpath('./td[10]/text()').extract_first()      yield item

pipelines.py

class XicidailiPipeline(object):  """  西刺代理爬蟲 item Pipeline  create table xicidaili(    id int primary key auto_increment,    country varchar(10) not null,    ip varchar(30) not null,    port varchar(10) not null,    address varchar(30) not null,    anonymous varchar(10) not null,    type varchar(20) not null,    speed varchar(10) not null,    connect_time varchar(20) not null,    alive_time varchar(20) not null,    verify_time varchar(20) not null);  """  def __init__(self):    self.connection = pymysql.connect(host='localhost',                     user='root',                     password='123456',                     db='mydb',                     charset='utf8', # 不能用utf-8                     cursorclass=pymysql.cursors.DictCursor)  def process_item(self,item,spider):    with self.connection.cursor() as cursor:      sql='insert into xicidaili' /        '(country,ip,port,address,anonymous,type,speed,connect_time,alive_time,verify_time) values' /        '(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);'      args=(item['country'],item['ip'],item['port'],item['address'],item['anonymous'],item['type'],item['speed'],item['connect_time'],item['alive_time'],item['verify_time'])      spider.logger.info(args)      cursor.execute(sql,args)    self.connection.commit()  def close_spider(self,spider):    self.connection.close()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万山特区| 武清区| 万州区| 吴忠市| 辰溪县| 旅游| 定结县| 苏尼特右旗| 论坛| 綦江县| 通渭县| 广宗县| 许昌市| 慈利县| 大方县| 会理县| 西乌| 鄢陵县| 大田县| 广州市| 永平县| 汝南县| 界首市| 巴东县| 温泉县| 宣化县| 东阿县| 揭东县| 铜陵市| 洪江市| 淳化县| 玉门市| 汉中市| 拜城县| 高州市| 南城县| 浪卡子县| 普定县| 德令哈市| 焦作市| 普洱|