国产探花免费观看_亚洲丰满少妇自慰呻吟_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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定兴县| 桂东县| 锦州市| 镇宁| 靖边县| 安塞县| 温州市| 威宁| 万源市| 治多县| 沙坪坝区| 于田县| 保山市| 晋宁县| 上饶县| 彰化市| 陇西县| 花垣县| 南康市| 瓮安县| 阿合奇县| 象州县| 友谊县| 白玉县| 宣威市| 浠水县| 海丰县| 南平市| 绥芬河市| 东阿县| 榆树市| 沁源县| 安顺市| 灌阳县| 扎赉特旗| 长宁区| 永福县| 吉林省| 西青区| 阿合奇县| 桐梓县|