今天從山西衛健委官網上爬取新型冠狀病毒疫情有關內容的資料。到發部落格為止我只做了一半,只是將相關文字爬取下來,還沒有經過處理。那麼主要說一說我碰到的問題吧。主要就是爬取網頁的文字內容時受到網頁標籤的影響,難以規範地取得我想要的內容,影響包括但不限於各種稀奇古怪的位置上出現的換行符、空格、製表符。同時爬取下來的網頁還是一大塊,因為我並不能一下子得到我想要的資料,所以這一大塊網頁我還要分成幾個小部分單獨去處理直到得到有關資料。話不多說,**如下:
1view code#-*- coding: utf-8 -*-
2import
scrapy
3from scrapy import
request
4importre5
importos6
78class
sxgzbdspider(scrapy.spider):
9 name = '
sxgzbd
'10 allowed_domains = ['
wjw.shanxi.gov.cn']
11 start_urls = ['
']1213
defparse(self, response):
14 context = ""
15 str1 = ""
16if response.url == '
':17 sxurls =response.xpath(18"
//div[@class='demo-right']//li/a[contains(@title,'新型冠狀病毒')]/@href
").extract()
19for i in
sxurls:
20yield
request(i)
21else
:22 data =response.xpath(23"
//div[@class='artxx']/text()
").re("
2020-\d\d-\d\d")
24 contexts =response.xpath(25"
//div[@class='ze-art']//text()
").extract()
26for i in
contexts:
27 context +=i28#
將所有的換行符換成乙個空格
29 context = re.sub('
\n+', '
', context)30#
將所有的空格換成乙個空格
31 context = re.sub('
+', '
', context)32#
將所有的製表符換成乙個空格
33 context = re.sub('
\t+', '
', context)34#
將所有的空格換成乙個換行符
35 context = re.sub('
+', '\n'
, context)36#
如果alldata檔案存在,刪除
37if os.path.exists("
alldata.txt"):
38 os.remove("
alldata.txt")
39#追加寫入
40 with open("
alldata.txt
", 'a'
) as p:
41p.write(context)42#
讀出檔案內容為字串
43 f = open("
alldata.txt
", "r"
)44for line2 in
f:45 str1 =line246#
根據換行符分割
47 finalstr = str1.split("\n"
)48for i in
finalstr:
49if len(i) > 70:
50if os.path.exists(str(i[:9])+"
.txt"):
51 os.remove(str(i[:9])+"
.txt")
52 with open(str(i[:9]) + "
.txt
", 'a'
) as p:
53 p.write(i)
寒假大資料學習筆記九
2 建立scrapy專案 這是很麻煩的一步,因為pycharm沒法建立scrapy專案,所以無論是windows還是linux都需要使用命令建立,可以使用命令scrapy檢視所有的scrapy可使用命令。scrapy genspider 專案名 網域名稱 切換到想建立專案的的位置,輸入以上命令即可。...
寒假大資料學習筆記七
今天由於某些私人原因,學習時間比較少,學習內容為基礎的urllib error。1 異常處理 一般常用的異常有兩個 httperror和urlerror。urlerror一般出現的情況是沒有網路連線 伺服器連線失敗 找不到指定的伺服器。例子如下 1 try 2 url 3 response requ...
寒假大資料學習筆記五
今天學習內容為正規表示式,這一塊我一整天竟然沒有學完。在一開始爬取網頁匹配有用的字串時,我用的是find方法,如下 和 jpg 來鎖定鏈結,這樣做十分不方便,因為很難保證得到的是想要的鏈結,一旦有非鏈結匹配成功,同樣也會被扒下來,這樣會對清洗資料造成很大的麻煩。而正規表示式,無疑會方便許多。但正規表...