最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Scrapy框架爬取西刺代理網(wǎng)免費高匿代理的實現(xiàn)代碼

 更新時間:2019年02月22日 10:14:54   作者:Money多多  
今天小編就為大家分享一篇關(guān)于Scrapy框架爬取西刺代理網(wǎng)免費高匿代理的實現(xiàn)代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

分析

需求:

爬取西刺代理網(wǎng)免費高匿代理,并保存到MySQL數(shù)據(jù)庫中。

這里只爬取前10頁中的數(shù)據(jù)。

思路:

  1. 分析網(wǎng)頁結(jié)構(gòu),確定數(shù)據(jù)提取規(guī)則
  2. 創(chuàng)建Scrapy項目
  3. 編寫item,定義數(shù)據(jù)字段
  4. 編寫spider,實現(xiàn)數(shù)據(jù)抓取
  5. 編寫Pipeline,保存數(shù)據(jù)到數(shù)據(jù)庫中
  6. 配置settings.py文件
  7. 運行爬蟲項目

代碼實現(xiàn)

items.py

import scrapy
class XicidailiItem(scrapy.Item):
  # 國家
  country=scrapy.Field()
  # IP地址
  ip=scrapy.Field()
  # 端口號
  port=scrapy.Field()
  # 服務(wù)器地址
  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,
}

結(jié)果

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 在Django中使用ElasticSearch

    在Django中使用ElasticSearch

    這篇文章主要介紹了在Django中使用ElasticSearch,Elasticsearch是基于Lucene庫的搜索引擎。它提供了具有HTTP?Web界面和無模式JSON文檔的分布式,多租戶功能的全文本搜索引擎,下面詳細內(nèi)容,需要的朋友可以參考一下
    2022-01-01
  • python?opencv圖像的高通濾波和低通濾波的示例代碼

    python?opencv圖像的高通濾波和低通濾波的示例代碼

    這篇文章主要介紹了python?opencv圖像的高通濾波和低通濾波,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • python多線程共享變量的使用和效率方法

    python多線程共享變量的使用和效率方法

    今天小編就為大家分享一篇python多線程共享變量的使用和效率方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 使用Python操作excel文件的實例代碼

    使用Python操作excel文件的實例代碼

    這篇文章主要介紹了使用Python操作excel文件的實例代碼,需要的朋友可以參考下
    2017-10-10
  • Python何時應(yīng)該使用Lambda函數(shù)

    Python何時應(yīng)該使用Lambda函數(shù)

    這篇文章主要介紹了Python何時應(yīng)該使用Lambda函數(shù),Python 中定義函數(shù)有兩種方法,一種是用常規(guī)方式 def 定義,函數(shù)要指定名字,第二種是用 lambda 定義,不需要指定名字,稱為 Lambda 函數(shù),需要的朋友可以參考下
    2019-07-07
  • 10行Python代碼就能實現(xiàn)的八種有趣功能詳解

    10行Python代碼就能實現(xiàn)的八種有趣功能詳解

    Python憑借其簡潔的代碼,贏得了許多開發(fā)者的喜愛,因此也就促使了更多開發(fā)者用Python開發(fā)新的模塊。面我們來看看,我們用不超過10行代碼能實現(xiàn)些什么有趣的功能吧
    2022-03-03
  • Python讀取配置文件-ConfigParser的二次封裝方法

    Python讀取配置文件-ConfigParser的二次封裝方法

    這篇文章主要介紹了Python讀取配置文件-ConfigParser的二次封裝方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 通過python獲取甲流分布數(shù)據(jù)

    通過python獲取甲流分布數(shù)據(jù)

    近期,多地學(xué)校出現(xiàn)因甲流導(dǎo)致的班級停課,兒科甲流患者就診量呈數(shù)倍增長,今天我們同樣的操作來獲取下現(xiàn)在甲流感染的數(shù)據(jù),需要的朋友可以參考下
    2023-03-03
  • python數(shù)字圖像處理之圖像簡單濾波實現(xiàn)

    python數(shù)字圖像處理之圖像簡單濾波實現(xiàn)

    這篇文章主要為大家介紹了python數(shù)字圖像處理之圖像簡單濾波實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 用python實現(xiàn)一個簡單的驗證碼

    用python實現(xiàn)一個簡單的驗證碼

    這篇文章主要介紹了用python實現(xiàn)一個簡單的驗證碼的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12

最新評論

靖江市| 昌黎县| 利辛县| 洪泽县| 仪征市| 仁怀市| 万全县| 攀枝花市| 寿光市| 栖霞市| 鹤庆县| 交城县| 宝兴县| 新营市| 新密市| 绥棱县| 佛山市| 东兴市| 鄯善县| 石狮市| 松潘县| 潍坊市| 余干县| 平南县| 鄂托克旗| 广州市| 观塘区| 上犹县| 武强县| 永福县| 乌兰县| 响水县| 周口市| 裕民县| 昌宁县| 青神县| 罗源县| 宽城| 乐平市| 两当县| 颍上县|