本例不涉及cookie,即抓取的資源無需登入認證。爬蟲主要做兩件事,乙個是抓取請求鏈結,另乙個是分析響應的資料。鑑於扇貝單詞書的詞串頁中的頁碼是通過js動態生成,直接抓取頁面內容是不能獲取,因此程式模擬了它的分頁請求路徑向目標url發請求,拉取響應體
分析頁面 爬取指定內容 抓取鏈結 分析資料
資料寫入檔案輸出,需要注意寫入編碼,若未指定py
會採用作業系統的預設編碼
beautifulsoup
解析單詞書頁 --> 詞串頁 ,分別拉取章節目錄,詞串頁目錄各自鏈結
from bs4 import beautifulsoup
import requests
import math
baseurl = ''
pybookurl = '/wordbook/187711/'
def getsoup(url):
rsp = requests.get(url)
if rsp.status_code == 200:
return beautifulsoup(rsp.content, "lxml")
return none
def getchapterlinks(pybookurl):
chapters = getsoup(pybookurl).select('td.wordbook-wordlist-name > a')
return [(chapter.get_text(), chapter['href']) for chapter in chapters]
def getwordlinks(starturl):
entryurl = '%s%s' % (baseurl, starturl)
numvocab = getsoup(entryurl).find('span', ).get_text()
pages = math.ceil(int(numvocab)/20)
return [(page, '%s?page=%d' % (entryurl, page))for page in range(1, pages+1)]
def getwords(wordpage):
wordlist = getsoup(wordpage).select('td.span2 > strong')
return [" "+word.get_text() for word in wordlist]
with open("pyword.txt", "w", encoding="utf8") as f:
for chapter, chapterlink in getchapterlinks(pybookurl):
f.write(chapter+"\n")
for page, link in getwordlinks(chapterlink):
f.write('第%d頁' % page)
f.writelines(getwords(link))
f.write('\n')
f.write('\n')
bs4爬取網頁基礎
import requests from bs4 import beautifulsoup def getsoup url try r requests.get url,timeout 30 r.raise for status print r.text 很亂 soup beautifulsoup ...
BS4爬取豆瓣電影
爬取豆瓣top250部電影 建立表 connect.py from sqlalchemy import create engine hostname localhost port 3306 username root password 123456 database douban db url my...
爬蟲架構 bs4
方便解析html xml等格式的原始碼,快速查詢 修改等操作,節省數小時乃至更多的工作時間 官網文件 from bs4 import beautifulsoup print path beautifulsoup path 非真實網頁 html doc 夏日炎炎,要你幹嘛 print soup.hea...