安裝
pip install pypiwin32
pip install twisted-18.7.0-cp36-cp36m-win_amd64.whl
pip install scrapy
建立和執行專案
scrapy startproject qsbk #建立專案
scrapy genspider qsbk_spider "qiushibaike.com" #建立爬蟲
scrapy crawl qsbk_spider #執行爬蟲
**
qsbk_spider.py
# -*- coding: utf-8 -*-
''''''
import scrapy
from qsbk.items import qsbkitem
class qsbkspiderspider(scrapy.spider):
name = 'qsbk_spider'
allowed_domains = ['qiushibaike.com']
start_urls = ['']
base_domain = ""
def parse(self, response):
duanzidivs = response.xpath("//div[@id='content-left']/div")
for duanzidiv in duanzidivs:
author = duanzidiv.xpath(".//h2/text()").get().strip()
content = duanzidiv.xpath(".//div[@class='content']//text()").getall()
content = "".join(content).strip()
item = qsbkitem(author=author,content=content)
yield item
#爬後面頁的資料
next_url = response.xpath("//ul[@class='pagination']/li[last()]/a/@href").get()
if not next_url:
return
else:
yield scrapy.request(self.base_domain+next_url,callback=self.parse)
item.py
import scrapy
class qsbkitem(scrapy.item):
author = scrapy.field()
content = scrapy.field()
pipelines.py
# -*- coding: utf-8 -*-
import json
''''''
#1.手動把dick轉換成json格式
# class qsbkpipeline(object):
# def __init__(self):
# self.fp = open('duanzi.json','w',encoding='utf-8')
## def open_spider(self,spider):
# print('開始爬蟲')
## def process_item(self, item, spider):
# item_json = json.dumps(dict(item),ensure_ascii=false)
# self.fp.write(item_json+'\n')
# return item
## def close_spider(self,spider):
# self.fp.close()
# print('爬蟲結束了')
#2.適用jsonitemexporter,使用與資料量小的情況下
# from scrapy.exporters import jsonitemexporter
# class qsbkpipeline(object):
# def __init__(self):
# self.fp = open('duanzi.json','wb')
# self.exporter = jsonitemexporter(self.fp,ensure_ascii=false,encoding='utf-8')
# self.exporter.start_exporting()
## def open_spider(self,spider):
# print('開始爬蟲')
## def process_item(self, item, spider):
# self.exporter.export_item(item)
# return item
## def close_spider(self,spider):
# self.exporter.finish_exporting()
# self.fp.close()
# print('爬蟲結束了')
#3.jsonlinesitemexporter,適用與資料量大的情況下
from scrapy.exporters import jsonlinesitemexporter
class qsbkpipeline(object):
def __init__(self):
self.fp = open('duanzi.json','wb')
self.exporter = jsonlinesitemexporter(self.fp,ensure_ascii=false,encoding='utf-8')
def open_spider(self,spider):
print('開始爬蟲')
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
def close_spider(self,spider):
self.fp.close()
print('爬蟲結束了')
settings.py
robotstxt_obey = false
download_delay = 1
default_request_headers =
item_pipelines =
start.py
from scrapy import cmdline
cmdline.execute("scrapy crawl qsbk_spider".split())
python丨Selenium爬取拉鉤職位資訊
第一頁職位資訊 from selenium import webdriver from lxml import etree import re import time class lagouspider object def init self self.driver webdriver.chrom...
爬取糗事百科的spider
個人一直對網路爬蟲感興趣,最近使用python的flask框架開發了乙個小型 有待改進 以及最近在學習深度學習的開源框架caffe,caffe提供了python介面。藉此機會學習了一下python以及利用python開發爬蟲。希望後面能夠利用自己寫的爬蟲,爬取一些資料集用於caffe訓練。如下 au...
函式週期表丨資訊丨值丨資訊類函式
資訊類函式 這一部分函式,屬於用法比較簡單的資訊類函式,沒有什麼太大的說道,通常可以用在任意一種邏輯表示式。結果返回都是true或者false。用途 用來判定各種資料型別。isblank dax isblank 值 作用 判定值是否為空白。iserror dax iserror 值 作用 判定值是否...