1. 程式人生 > >Python爬蟲實習筆記 | Week3 資料爬取和正則再學習

Python爬蟲實習筆記 | Week3 資料爬取和正則再學習

2018/10/29
1.所思所想:雖然自己的考試在即,但工作上不能有半點馬虎,要認真努力,不辜負期望。中午和他們去吃飯,算是吃飯創新吧。下午爬了雞西的網站,還有一些欄位沒爬出來,正則用的不熟悉,此時終於露出端倪,心情不是很好。。明天上午把正則好好看看。

2.工作:
[1].哈爾濱:html post請求;
[2].大慶:aspx 先get後post請求;
[3].雞西: aspx 先get後post請求,postdata資訊在input標記裡;此外,法定代表人和處罰依據沒摳出來;

2018/10/30
1.所思所想:今天上午好好規劃了下,以後每天上午都努力多學點新東西,這樣工作的效率才會高。教訓來源於網頁爬取的正則的應用,正因為上午的再學習,才使得下午的工作很高效。中午,幫了二叔一個忙,說明的啟示是,一是積累,資源的積累,見識的積累,人脈的積累,對一個人的價值表現很重要;二是助人為樂,幫助他人也會讓自己感到快樂。下午就在盡力的爬資料,專注的時光過得好快。。

  • Python正則的學習整理:

python正則之再學習與實踐

2.工作:
[1].昨天雞西市的處罰依據一直有問題,今天發現是中文的文號(?)與英文文號(?)不同的原因,花了很多時間;
[2].在爬取雞西市的資料時,發現“法定代表人”這個可能會報錯,需要對一塊程式碼內容進行修改;


[3].64鶴崗市 圖片內容為主
[4].65雙鴨山 圖片內容為主
[5].67伊春市
按照國家《政府網站發展指引》(國辦發[2017]47號)有關要求,為加強我市政府網站集約化建設,進一步推進政務公開和政務服務工作,經部門申請、逐級審批,伊春市環保局網站申請臨時下線,網站功能和原有內容整合遷移到市政府入口網站(www.yc.gov.cn)向社會發布。
目前不可訪問。。。
[6].68佳木斯市  網站內搜尋無相關資訊
[7].69七臺河市 網站內搜尋無相關內容

2018/10/31
1.所思所想:今天上午跟著昨天的計劃,把python正則好好梳理了下,沒想到下午就在專案中能得到很好的應用,說明技術要不斷積累,才是省時省力的最佳途徑。中午,和蔡君吃飯,發現自己的口頭表達與傾聽能力還需要很大提升,需要自己去好好注意,不可大意。晚上看設計模式這一塊,感覺自己吃不透,而且會走神,可能自己的經驗還不足以消化。不管怎麼樣,一步一腳印,慢慢前進!

2.工作:
72綏化市  內容以圖片為主
73大興安嶺地區 html get請求
用正則的好處是,對於不同表述的文字,不會使指令碼變得冗長,而且顯得簡單,這種簡單建立在對正則的大致掌握上。

2018/11/01
1.所思所想:今天上午就還是學習正則,做做書後的題目熟練一下用法,希望以後有空看一下《精通正則表示式》,相信會對自己的工作有很大幫助。中午和他們四一起吃了飯,發現自己有與人爭辯的衝動,我覺得這是一定要不得的,與人相處,並不以真理為唯一衡量條件,而是能尋找共同點,增加彼此的信任,多談談對方。下午開始搞環評,總體來說思路清晰,明天把程式碼再優化下。

2.工作:
[1].環評工作了解,並對程式碼進行修改;
[2].吉林省白城市 環評資料爬取 但批准公告無;
[3].整理和優化爬取思路;

2018/11/02
1.所思所想:擼起袖子加油幹!

2.工作:
[1].圖片的爬取
今天爬取資料時,想著圖片爬取和解析的問題,於是便行事沖沖的做了起來。
起初,我用了urllib.request.urlretrive方法,實現起來不算麻煩,爬取的是百度圖片,對圖片的url正則要優化下,如下:
import requests
import json
import chardet
from bs4 import BeautifulSoup
import urllib
import re

url = 'https://image.baidu.com/search/index?ct=201326592&z=&tn=baiduimage&ipn=r&word=桌布 不同風格 小清新&pn=0&istype=2&ie=utf-8&oe=utf-8&cl=2&lm=-1&st=-1&fr=&fmq=1526269427171_R&ic=0&se=&sme=&width=&height=&face=0'
user_agent = 'Mozilla/4.0 (compatible); MSIE 5.5; Windows NT'
headers = {
    'User-Agent': user_agent
}
response = requests.get(url, headers=headers)
response.encoding = chardet.detect(response.content)['encoding']
soup = BeautifulSoup(response.text, 'lxml')
print(soup.prettify())
images = soup.find_all(name='img', class_='main_img')
# print(images)

# 開啟方式1
html = response.text
srcs = re.findall(r'".*?URL":"(.*?\.jpg)', html)

i = 1
for src in srcs:
    print(src)
    try:
        src.replace('\\', '')
        urllib.request.urlretrieve(src, './BaiduImages/img' + str(i) + '.jpg')
        print('圖片{}下載成功:'.format(i), src)
    except:
        pass
    i += 1

中午吃飯時,和學長聊了下,可以不用那麼麻煩,直接用response.content返回圖片的位元組格式即可,可見requests模組是非常強大的,程式碼如下:
import requests
import json
import chardet
from bs4 import BeautifulSoup
import re


url = 'https://image.baidu.com/search/index?ct=201326592&z=&tn=baiduimage&ipn=r&word=桌布 不同風格 小清新&pn=0&istype=2&ie=utf-8&oe=utf-8&cl=2&lm=-1&st=-1&fr=&fmq=1526269427171_R&ic=0&se=&sme=&width=&height=&face=0'
user_agent = 'Mozilla/4.0 (compatible); MSIE 5.5; Windows NT'
headers = {
    'User-Agent': user_agent
}
response = requests.get(url, headers=headers)
response.encoding = chardet.detect(response.content)['encoding']

# 開啟方式1
html = response.text
srcs = re.findall(r'".*?URL":"(.*?\.jpg)', html)

i = 1
for src in srcs:
    print(src)
    try:
        filename = './BaiduImages/image' + str(i) + '.jpg'
        with open(filename, 'wb') as fp:
            response_for_img = requests.get(src)
            fp.write(response_for_img.content)
    except:
        pass
    i += 1

[2].環評資料的爬取
吉林省    松原市    get
受理公示內容為doc檔案    http://hbj.jlsy.gov.cn/ywgg/hpslgs/
擬審批和審批結果公示可爬取    http://hbj.jlsy.gov.cn/ywgg/hjyxpj/