前面整理了一些爬蟲的內容,今天寫乙個小小的栗子,內容不深,大佬請忽略。內容包括對豆瓣讀書**中的書籍的基本資訊進行爬取,並整理,便於我們快速了解每本書的中心。
每當爬取某個網頁的資訊時,首先就是要進入到網頁中,看看有沒有什麼爬取過程中的限制,可以檢視**的robots協議。就是在原**的後面加上"/robots.txt"。本**中得到的結果是:
user-agent: *根據上面的協議可以看到,並沒有禁止一些普通的爬蟲,就像我們現在這樣,僅僅爬取一點點的東西來供自己使用。那麼,我們就可以使用之前文章中提到的結構來實現這個爬蟲,首先匯入函式庫,然後套用框架,傳入位址,返回頁面內容。這點內容在這篇部落格中寫到了,這裡就不詳細解釋了。到此,網頁的爬取就結束了,接下來就剩下從這些東西中拿到我們想要的內容。disallow: /subject_search
disallow: /search
disallow: /new_subject
disallow: /service/iframe
disallow: /j/
sitemap:
sitemap:
user-agent: wandoujia spider
disallow: /
1上面提取的的網頁**包括很多東西,像展示出來的頁面的各種框架等等,這些對我們來說都是沒有用的,而且通過正則來提取資訊,如果在整個頁面中直接提取的話,不免會出現一些巧合,使得沒有提取到真正想要的內容,而且pattern一樣的其他內容,所以,首先,把要把關鍵的塊先拿出來,再一點一點的取出具體資訊。import
requests
23 url = "
"4defgethtmltext(url):
5 headers =
8try
:9 response = requests.get(url, headers=headers)
10response.raise_for_status()
12return
response.text
13except:14
print("
fail")
15return
1617 html = gethtmltext(url)
1通過檢查網頁源**,找到可以取出主要資訊的匹配規則,將中間的內容全部獲得。剩下的就是通過正則來提取每本書的每項資訊。這個在於自己觀察他們的規律,尋找匹配的規則。資訊的標籤不止乙個,最後選擇了使用pandas來整理資料,pandas的dataframe資料型別可以很方便的儲存二維結構,而且pandas有將資料之間儲存成excel格式的方法(dataframe.to_excel())。importre2
3 re_books = re.compile('
', re.s) #
re.s也在正規表示式的部落格中寫到了,是為了讓「.」可以匹配換行符
4 content = re_books.search(html)
1我們可以看一下得到的結果,pandas直接輸出的結果也很規整,這裡儲存到了excel中,起初存到csv檔案中,但是亂碼了,後面沒多想就換成了excel,稍後我再去看看怎麼回事,或者有讀者清楚地,可以教教博主。import pandas as pd #
這是大部分人的習慣,pandas比較長,而且在資料處理中經常使用,所以用pd兩個字母來代表23
#首先,先建立乙個dataframe,之後遍歷每本書籍的資訊,存成dataframe格式拼接在他的後面就可以了
4 data = pd.dataframe(columns=['
title
', '
author
', '
abstract
', '
href
', '
publisher'])
56 re_book = re.compile('
(.*?)
', re.s)
7 booklist = re_book.findall(content[0]) #
findall找到所有的書籍資訊,返回為列**式
8for book in
booklist:
9 count =0
10 count += 1
11 href = re.search('
href="(.*?)"
', book) #
.*? 是指以非貪婪的模式匹配,()是分組,通過group方便取出其中的資訊
12 href = href.group(1)
13 title = re.search('
(.*?)
', book, re.s)
14 title = title.group(1).split()[0]
15 author = re.search('
(.*?)
', book, re.s)
16 author = '
'.join(author.group(1).split())
17 publisher = re.search('
(.*?)
', book, re.s)
18 publisher = '
'.join(publisher.group(1).split())
19 abstract = re.search('
(.*?)
', book, re.s)
20 abstract = '
'.join(abstract.group(1).split())
21 abstract = re.sub('
【內容簡介】
', '', abstract) #
慢慢除錯中發現,取得的資訊不太好看,其中在第一本數的主要內容開頭有這麼幾個字,就用re的sub方法替換掉了
22 new = pd.dataframe(, index=["0"
])24 data.to_excel('
bookinfo.xls
', encoding='
utf-8
')
圖中有些東西沒有展示出來,但是大家都懂對吧。可以自己試一試。當然這個爬蟲很淺,僅得到這點的資料,後面的內容就交給你們了,可以試著往深里點一點,原理都是大同小異的,學習爬蟲在平時就要隨時發現可以挖掘的東西,慢慢嘗試。
python 爬蟲 豆瓣讀書使用者評分爬蟲
首先我們先建立接下來需要用的的東西 import requests 匯入requests模組用於請求網頁 from lxml import etree 從lxml模組中匯入etree模組用於解析網頁 class userspinfen 定義乙個douban類,用於承載後面的 def init sel...
豆瓣讀書 豆瓣電影
1.獲取豆瓣讀書頁資訊,為 如下 coding utf 8 import requests from lxml import etree 1.獲取豆瓣讀書網頁內容 headers url response requests.get url,headers headers text response....
Python 爬蟲 抓取豆瓣讀書TOP250
coding utf 8 author yukun import requests from bs4 import beautifulsoup 發出請求獲得html原始碼的函式 def get html url 偽裝成瀏覽器訪問 resp requests.get url,headers heade...