Duyệt qua một domain đơn sử dụng Python

Duyệt qua một domain đơn sử dụng Python

Bạn đã biết rằng làm cách nào viết một Python script cái giành một Wikipedia page tùy biến và sinh ra một danh
sách các links trên page đó:

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen(‘http://en.wikipedia.org/wiki/Kevin_Bacon’)
bs = BeautifulSoup(html, ‘html.parser’)
for link in bs.find_all(‘a’):

if ‘href’ in link.attrs:

print(link.attrs[‘href’])

Nếu bạn nhìn vào một danh sách các links sinh ra, bạn sẽ nhận thấy rằng tất cả các articles bạn mong đợi là ở đó:
Apollo 13, Philadelphia, Primetime Emmy Award, và các films khác cái Kevin Bacon xuất hiện trong. Tuy nhiên, có
một vài thứ cái bạn cũng có thể không muốn:

//foundation.wikimedia.org/wiki/Privacy_policy
//en.wikipedia.org/wiki/Wikipedia:Contact_us

Trên thực tế, Wikipedia có đầy sidebar, footer, và header links cái xuất hiện trên mọi trang, cùng với các links
tới các category pages, talk pages, và các pages khác cái không chứa các articles khác nhau:

/wiki/Category:All_articles_with_unsourced_statements
/wiki/Talk:Kevin_Bacon

Gần đây, một người bạn của tôi, trong khi làm việc trên một dự án Wikipedia-scraping tương tự, nói rằng anh ta
đã viết một hàm lọc lớn, với hơn 100 dòng code, để quyết định liệu một Wikipedia link bên trong có phải một
article page. Không may mắn là, anh ta đã không dành nhiều thời gian cố gắng tìm ra mô hình giữa “article links”
and “other links”, hay anh ta có thể đã khám phá ra mẹo. Nếu bạn thẩm định các links cái trỏ tới các article
pages (đối ngược với các pages bên trong khác), bạn sẽ thấy rằng chúng có 3 thứ chung:
+ Chúng nằm bên trong div với id thiết lập thành bodyContent
+ Các URLs không chứa :
+ Các URLs bắt đầu với /wiki/

Chia sẻ