作為入門學習,我選擇了乙個靜態**:生物資訊交流分享論壇(public library of bioinformatics (plob));
第一次嘗試,只抓取網頁文字部分。
安裝requests庫和bs4庫
前者用來鏈結**和處理http協議;後者將網頁變成結構化資料,方便抓取。
easy_install requests
easy_install beautifulsoup4
#!/usr/bin/env python #unix檔案頭,windows可以不用
# -*- coding: utf-8 -*- #指定編碼,處理中文還是要加的
import sys
reload(sys)
sys.setdefaultencoding("utf-8") #這兩行是在遇到以下報錯找到的解決辦法(unicodeencodeerror: 'ascii' codec can't encode characters in position 32-34: ordinal not in range(128))
from bs4 import beautifulsoup
import requests
defget_submenu
(url):
#定義乙個獲取主頁下sub menu**的函式
# url = ""
""" :rtype : basestring
"""url_lis =
r = requests.get(url) #get方法獲取網頁
soup = beautifulsoup(r.text, "html.parser")#解析網頁
data = soup.find_all("ul", "sub-menu")#擷取ul標籤下,class="sub-menu"的內容
for d in data[0].find_all("a"): #擷取子標籤中內容
return url_lis
defget_texturl
(url):
# url = "category/bioinformatics"
""" :rtype : basestring
"""text_url =
r = requests.get(url)
soup = beautifulsoup(r.text, "html.parser")
data = soup.find(id="content").find_all("h2")
for d in data:
return text_url
defget_text
(url):
#獲取文章下標題,發布時間及正文部分文字函式
# type: (url) -> string
r = requests.get(url)
soup = beautifulsoup(r.text, "html.parser")
title = soup.title.string.split("|")[0] #獲取文章標題
date = soup.find_all("span", "date")[0].get_text() #獲取文章發布時間
aa = soup.find(id="entry") #定位到正文部分
s = ""
for a in aa.strings: #獲取文章文字部分
a = a.rstrip()
ifnot a:
s += "\n"
else:
s = s + a
text = s
return title, date, text.strip()
##函式已經寫好,就差抓取了
url = ""
sub_menu = get_submenu(url)#獲取sub menu
for group in sub_menu:
group_url = group[0]
group_text = group[1]
w = open("plob/%s.txt" % group_text, "w")#首先需要建好plob資料夾,將各個子類抓取到的文章內容寫到乙個txt檔案中
aa = group_url
print aa
for ss in text_urllis:
title = get_text(ss)[0]
date = get_text(ss)[1]
text = get_text(ss)[-1]
w.write("##== %s ==##\n#= %s =#\n%s\n\n" % (title, date, text))#將文章寫進檔案
for page in range(2, 100):
aa = group_url+ "/page/" +str(page)#翻頁
if2 == requests.get(group_url+"/page/"+str(page)).status_code/100:#翻頁成功則繼續
print aa
text_urllis = get_texturl(aa)
for ss in text_urllis:
title = get_text(ss)[0]
date = get_text(ss)[1]
text = get_text(ss)[-1]
w.write("##== %s ==##\n#= %s =#\n%s\n\n" % (title, date, text))
else:#翻頁不成功則退出,進下乙個sub menu抓取
break
w.close()
Python爬蟲入門 一
python版本 2.7 首先爬蟲是什麼?網路爬蟲 又被稱為網頁蜘蛛,網路機械人,在foaf社群中間,更經常的稱為網頁追逐者 是一種按照一定的規則,自動的抓取全球資訊網資訊的程式或者指令碼。根據我的經驗,要學習python爬蟲,我們要學習的共有以下幾點 首先,我們要用python寫爬蟲,肯定要了解p...
python 爬蟲入門 一)
今天學了python爬蟲,很有意思,寫一下部落格記錄一下學習過程。最基本的爬蟲僅需要urllib庫,re庫和chardet庫 urllib庫是python內建的處理網路請求的庫。對於基本的爬蟲我們僅僅需要使用他的內部模組urllib.requset。urllib.request中所要使用的函式 ur...
python爬蟲入門(一)
1.什麼是爬蟲 2.爬蟲的核心 3.爬蟲的語言 4.爬蟲分類 聚焦爬蟲 就是現在我們這些爬蟲程式設計師所進行的工作,就是根據客戶的需求,爬取指定 的特定內容。1.首先要理解什麼是http https協議 2.python基礎知識 3.開發工具 4.抓包工具 上面的 只能簡單抓取網頁,一旦遇到需要請求...