创建一个爬虫从一个页面跳到另一个页面,来收集维基百科的页面标题、正文的第一个段落,以及编辑页面的连接。
代码如下:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
pages = set()
def getLinks(pageurl):
global pages
html = urlopen("http://en.wikipedia.org"+pageurl)
bsObj = BeautifulSoup(html.read(),"html.parser")
try:
print(bsObj.h1.get_text())
print(bsObj.find(id = "mw-content-text").findAll("p")[0]) # 标题
print(bsObj.find(id = "ca-edit").find("span").find("a").attrs["href"]) # 正文
except AttributeError:
print("lack of some inf, don't worry")
for link in bsObj.findAll("a", href = re.compile("^(/wiki/)")):
if "href" in link.attrs:
if link.attrs["href"] not in pages:
newPage = link.attrs["href"]
print("------------\n" + newPage)
pages.add(newPage)
getLinks(newPage)
getLinks("")
正文分析:
---<id
---<p 0
---<p 1
---<p 2
.........