中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-06-03 16:25:44 來源:億速云 閱讀:182 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關Scrapy框架爬取西刺代理網免費高匿代理的實現,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

思路:

  1. 分析網頁結構,確定數據提取規則

  2. 創建Scrapy項目

  3. 編寫item,定義數據字段

  4. 編寫spider,實現數據抓取

  5. 編寫Pipeline,保存數據到數據庫中

  6. 配置settings.py文件

  7. 運行爬蟲項目

代碼實現

items.py

import scrapy
class 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 scrapy
from myscrapy.items import XicidailiItem
class 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()

settings.py

ITEM_PIPELINES = {
  'myscrapy.pipelines.XicidailiPipeline': 300,
}

結果

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

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

關于Scrapy框架爬取西刺代理網免費高匿代理的實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

封丘县| 炎陵县| 藁城市| 乐安县| 施秉县| 古丈县| 武安市| 溆浦县| 定西市| 毕节市| 托克托县| 巴南区| 梨树县| 高州市| 新乐市| 宁波市| 洛南县| 射阳县| 始兴县| 咸丰县| 仁怀市| 水城县| 六盘水市| 台中县| 精河县| 祁连县| 习水县| 吴忠市| 德保县| 龙海市| 廊坊市| 个旧市| 武夷山市| 商都县| 三台县| 沂水县| 乌鲁木齐县| 肇东市| 都兰县| 丹江口市| 隆子县|