導航:首頁 > 編程語言 > 獲取全網網站列表python

獲取全網網站列表python

發布時間:2024-08-19 01:54:23

Ⅰ 濡備綍鎶撳彇緗戦〉涓婄殑鏁版嵁(濡備綍浣跨敤python榪涜岀綉欏墊暟鎹鎶撳彇)

鍦ㄥ綋浠婁俊鎮鐖嗙偢鐨勬椂浠o紝緗戦〉涓婅暣鈃忕潃澶ч噺鐨勬暟鎹錛屽逛簬璁稿氶嗗煙鐨勭爺絀跺拰搴旂敤鏉ヨ達紝鑾峰彇緗戦〉涓婄殑鏁版嵁鏄闈炲父閲嶈佺殑銆侾ython浣滀負涓縐嶇畝鍗曟槗瀛︿笖鍔熻兘寮哄ぇ鐨勭紪紼嬭璦錛岃騫挎硾搴旂敤浜庣綉欏墊暟鎹鎶撳彇銆傛湰鏂囧皢浠嬬粛濡備綍浣跨敤Python榪涜岀綉欏墊暟鎹鎶撳彇鐨勬搷浣滄ラゃ

涓銆佸畨瑁匬ython鍜岀浉鍏沖簱

瑕佷嬌鐢≒ython榪涜岀綉欏墊暟鎹鎶撳彇錛岄栧厛闇瑕佸畨瑁匬ython瑙i噴鍣ㄣ傚彲浠ヤ粠Python瀹樻柟緗戠珯涓嬭澆騫跺畨瑁呮渶鏂扮殑Python鐗堟湰銆傚畨瑁呭畬鎴愬悗錛岃繕闇瑕佸畨瑁呬竴浜涚浉鍏崇殑Python搴擄紝濡俽equests銆乥eautifulsoup銆乻elenium絳夈傚彲浠ヤ嬌鐢╬ip鍛戒護鏉ュ畨瑁呰繖浜涘簱錛屼緥濡傚湪鍛戒護琛屼腑杈撳叆浠ヤ笅鍛戒護鏉ュ畨瑁卹equests搴擄細

```

pipinstallrequests

```

浜屻佷嬌鐢╮equests搴撹幏鍙栫綉欏靛唴瀹

requests鏄涓涓鍔熻兘寮哄ぇ涓旀槗浜庝嬌鐢ㄧ殑HTTP搴擄紝鍙浠ョ敤鏉ュ彂閫丠TTP璇鋒眰騫惰幏鍙栫綉欏靛唴瀹廣備笅闈㈡槸涓涓浣跨敤requests搴撹幏鍙栫綉欏靛唴瀹圭殑紺轟緥浠g爜錛

```python

importrequests

url="https://www.example.com"

response=requests.get(url)

html=response.text

print(html)

```

鍦ㄨ繖涓紺轟緥涓錛屾垜浠棣栧厛瀵煎叆浜唕equests搴擄紝鐒跺悗鎸囧畾浜嗚佽幏鍙栫殑緗戦〉URL銆備嬌鐢╮equests.get()鏂規硶鍙戦丟ET璇鋒眰錛屽苟灝嗚繑鍥炵殑鍝嶅簲瀵硅薄璧嬪肩粰response鍙橀噺銆傛渶鍚庯紝閫氳繃response.text灞炴ц幏鍙栫綉欏電殑鍐呭癸紝騫舵墦鍗拌緭鍑恆

涓夈佷嬌鐢╞eautifulsoup搴撹В鏋愮綉欏靛唴瀹

beautifulsoup鏄涓涓鐢ㄤ簬瑙f瀽HTML鍜孹ML鏂囨。鐨凱ython搴擄紝鍙浠ユ柟渚垮湴浠庣綉欏典腑鎻愬彇鎵闇鐨勬暟鎹銆備笅闈㈡槸涓涓浣跨敤beautifulsoup搴撹В鏋愮綉欏靛唴瀹圭殑紺轟緥浠g爜錛

```python

frombs4importBeautifulSoup

soup=BeautifulSoup(html,"html.parser")

title=soup.title.text

print(title)

```

鍦ㄨ繖涓紺轟緥涓錛屾垜浠棣栧厛瀵煎叆浜咮eautifulSoup綾伙紝鐒跺悗灝嗕箣鍓嶈幏鍙栧埌鐨勭綉欏靛唴瀹筯tml浣滀負鍙傛暟浼犻掔粰BeautifulSoup綾葷殑鏋勯犲嚱鏁幫紝鍒涘緩涓涓狟eautifulSoup瀵硅薄soup銆傞氳繃soup.title.text灞炴у彲浠ヨ幏鍙栫綉欏電殑鏍囬橈紝騫舵墦鍗拌緭鍑恆

鍥涖佷嬌鐢╯elenium搴撴ā鎷熸祻瑙堝櫒琛屼負

selenium鏄涓涓鑷鍔ㄥ寲嫻嬭瘯宸ュ叿錛屼篃鍙浠ョ敤鏉ユā鎷熸祻瑙堝櫒琛屼負榪涜岀綉欏墊暟鎹鎶撳彇銆備嬌鐢╯elenium搴撳彲浠ユ墽琛孞avaScript浠g爜銆佹ā鎷熺偣鍑繪寜閽銆佸~鍐欒〃鍗曠瓑鎿嶄綔銆備笅闈㈡槸涓涓浣跨敤selenium搴撴ā鎷熸祻瑙堝櫒琛屼負鐨勭ず渚嬩唬鐮侊細

```python

fromseleniumimportwebdriver

driver=webdriver.Chrome()

driver.get(url)

button=driver.find_element_by_xpath("//button[@id='btn']")

button.click()

```

鍦ㄨ繖涓紺轟緥涓錛屾垜浠棣栧厛瀵煎叆浜唚ebdriver綾伙紝鐒跺悗鍒涘緩涓涓狢hrome嫻忚堝櫒瀵硅薄driver銆傞氳繃driver.get()鏂規硶鎵撳紑鎸囧畾鐨勭綉欏點傛帴涓嬫潵錛屼嬌鐢╠river.find_element_by_xpath()鏂規硶鎵懼埌欏甸潰涓婄殑鎸夐挳鍏冪礌錛屽苟浣跨敤click()鏂規硶妯℃嫙鐐瑰嚮鎸夐挳鐨勬搷浣溿

浜斻佸叾浠栧父鐢ㄧ殑緗戦〉鏁版嵁鎶撳彇鎶宸

闄や簡涓婅堪浠嬬粛鐨勫熀鏈鎿嶄綔澶栵紝榪樻湁涓浜涘父鐢ㄧ殑緗戦〉鏁版嵁鎶撳彇鎶宸у彲浠ユ彁楂樻姄鍙栨晥鐜囧拰鍑嗙『鎬с備緥濡傦紝鍙浠ヤ嬌鐢ㄦe垯琛ㄨ揪寮忔潵鍖歸厤鍜屾彁鍙栫壒瀹氭牸寮忕殑鏁版嵁錛涘彲浠ヤ嬌鐢ㄤ唬鐞嗘湇鍔″櫒鏉ラ殣鈃廔P鍦板潃鍜屾彁楂樿塊棶閫熷害錛涘彲浠ヤ嬌鐢ㄥ氱嚎紼嬫垨寮傛IO鏉ュ苟鍙戞姄鍙栧氫釜緗戦〉絳夈

Ⅱ 如何利用Python抓取靜態網站及其內部資源

這個非常閉冊塌簡單,requests+BeautifulSoup組合就可以輕松實現,下轎圓面我簡單介紹一下,感興趣的朋友可以自己嘗試一下,這里以爬取糗事網路網站數據(靜態網站)為例:

1.首先,安裝requets模塊,這個直接在cmd窗口輸入命令「pipinstallrequests」就行,如下:

2.接著安裝bs4模塊,這個模塊包含了BeautifulSoup,安裝的話,和requests一樣,直接輸入安裝命令「pipinstallbs4」即可,如下:

3.最後就是requests+BeautifulSoup組合爬取糗事網路,requests用於請求頁面,BeautifulSoup用於解析頁面,提取數據,主要步驟及截圖如下:

這里假設爬取的數據包含如下幾個欄位,包括用戶昵稱、內容、好笑數和評論數:

接著打開對應網頁源碼,就可以直接看到欄位信息,內容如下,嵌套在各個標簽中,後面就是解析這些標簽提取數據:

基於上面網頁內容,測試代碼如下,非常簡單,直接find對應標簽,提取文本內容即可:

程序運行截圖如下,已經成功抓取到網站數據:

至此,我們就完成了使用python來爬去靜態網站。總的來說,整個過程非常簡單,也是最基本的爬蟲內容,只要你有一定的python基礎,熟悉一下上面的示例,很快就能掌握的,當然,你也可以使用urllib,正則表達式匹配等,都行,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以姿段搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

Ⅲ python3 怎麼爬取新聞網站

需求:

從門戶網站爬取新聞,將新聞標題,作者,時間,內容保存到本地txt中。

用到的python模塊:

importre#正則表達式
importbs4#BeautifulSoup4解析模塊
importurllib2#網路訪問模塊
importNews#自己定義的新聞結構
importcodecs#解決編碼問題的關鍵,使用codecs.open打開文件
importsys#1解決不同頁面編碼問題

其中bs4需要自己裝一下,安裝方法可以參考:Windows命令行下pip安裝python whl包

程序:

#coding=utf-8
importre#正則表達式
importbs4#BeautifulSoup4解析模塊
importurllib2#網路訪問模塊
importNews#自己定義的新聞結構
importcodecs#解決編碼問題的關鍵,使用codecs.open打開文件
importsys#1解決不同頁面編碼問題

reload(sys)#2
sys.setdefaultencoding('utf-8')#3

#從首頁獲取所有鏈接
defGetAllUrl(home):
html=urllib2.urlopen(home).read().decode('utf8')
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'
links=soup.find_all('a',href=re.compile(pattern))
forlinkinlinks:
url_set.add(link['href'])

defGetNews(url):
globalNewsCount,MaxNewsCount#全局記錄新聞數量
whilelen(url_set)!=0:
try:
#獲取鏈接
url=url_set.pop()
url_old.add(url)

#獲取代碼
html=urllib2.urlopen(url).read().decode('utf8')

#解析
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'#鏈接匹配規則
links=soup.find_all('a',href=re.compile(pattern))

#獲取URL
forlinkinlinks:
iflink['href']notinurl_old:
url_set.add(link['href'])

#獲取信息
article=News.News()
article.url=url#URL信息
page=soup.find('div',{'id':'page'})
article.title=page.find('h1').get_text()#標題信息
info=page.find('div',{'class':'article-info'})
article.author=info.find('a',{'class':'name'}).get_text()#作者信息
article.date=info.find('span',{'class':'time'}).get_text()#日期信息
article.about=page.find('blockquote').get_text()
pnode=page.find('div',{'class':'article-detail'}).find_all('p')
article.content=''
fornodeinpnode:#獲取文章段落
article.content+=node.get_text()+' '#追加段落信息

SaveNews(article)

printNewsCount
break
exceptExceptionase:
print(e)
continue
else:
print(article.title)
NewsCount+=1
finally:
#判斷數據是否收集完成
ifNewsCount==MaxNewsCount:
break

defSaveNews(Object):
file.write("【"+Object.title+"】"+" ")
file.write(Object.author+" "+Object.date+" ")
file.write(Object.content+" "+" ")

url_set=set()#url集合
url_old=set()#爬過的url集合

NewsCount=0
MaxNewsCount=3

home='http://jia..com/'#起始位置

GetAllUrl(home)

file=codecs.open("D:\test.txt","a+")#文件操作

forurlinurl_set:
GetNews(url)
#判斷數據是否收集完成
ifNewsCount==MaxNewsCount:
break

file.close()

新聞文章結構

#coding:utf-8
#文章類定義
classNews(object):
def__init__(self):
self.url=None
self.title=None
self.author=None
self.date=None
self.about=None
self.content=None

對爬取的文章數量就行統計。

Ⅳ 如何用python爬取網站數據

這里簡單介紹一下吧,以抓取網站靜態、動態2種數據為慧返拍例,實驗環境win10+python3.6+pycharm5.0,主要內容如下:

抓取網站靜態數據(數據在網頁源碼中):以糗事網路網站數據為例

1.這里假設我們抓取的數據如下,主要包括用戶昵稱、內容、好笑數和評論數這4個欄位,如下:

對應的網頁源碼如下,包含我們所需要的數據:

2.對應網頁結構,主要代碼如下,很簡單,主要用到requests+BeautifulSoup,其中requests用於請求頁面,BeautifulSoup用於解析頁面:

程序運行截圖如下,已經成功爬取到數據:

抓取網站動態數據(數據不在網頁源碼中,json等文件中):以人人貸網站數據為例

1.這里假設我們爬取的是債券數據,主要包括年利率世型、借款標題、期限、金額和進度這5個欄位信息,截圖如下:

打開網頁源碼中,可以發現數據不在網頁源碼中,按F12抓包分析時,才發現在一個json文件中,如下:

2.獲取到json文件的url後,我們就可以爬取對應數據了,這里使用的包與上面類似,因為是json文件,所以還用了json這個包(解析json),主要內容如下:

程序運行截圖如下,前羨已經成功抓取到數據:

至此,這里就介紹完了這2種數據的抓取,包括靜態數據和動態數據。總的來說,這2個示例不難,都是入門級別的爬蟲,網頁結構也比較簡單,最重要的還是要會進行抓包分析,對頁面進行分析提取,後期熟悉後,可以藉助scrapy這個框架進行數據的爬取,可以更方便一些,效率更高,當然,如果爬取的頁面比較復雜,像驗證碼、加密等,這時候就需要認真分析了,網上也有一些教程可供參考,感興趣的可以搜一下,希望以上分享的內容能對你有所幫助吧。

Ⅳ 如何用最簡單的Python爬蟲採集整個網站

採集網站數據並不難,但是需要爬蟲有足夠的深度。我們創建一個爬蟲,遞歸地遍歷每個網站,只收集那些網站頁面上的數據。一般的比較費時間的網站採集方法從頂級頁面開始(一般是網站主頁),然後搜索頁面上的所有鏈接,形成列表,再去採集到的這些鏈接頁面,繼續採集每個頁面的鏈接形成新的列表,重復執行。

Ⅵ 爬蟲小白求問python如何爬取天貓京東等網頁

大的原則上,在網上能公開訪問的可見的數據資料都是有辦法爬取到的,天貓和京東上是有部分的訂單成交數據的,所以這些也是可以爬取的。某寶中的楚江數據,數據採集工作可以代寫爬蟲,也可以直接讓他們爬取數據,視頻,圖片,文字都可以。

Ⅶ 如何用最簡單的Python爬蟲採集整個網站

在之前的文章中Python實現「維基網路六度分隔理論「之基礎爬蟲,我們實現了在一個網站上隨機地從一個鏈接到另一個鏈接,但是,如果我們需要系統地把整個網站按目錄分類,或者要搜索網站上的每一個頁面,我們該怎麼辦?我們需要採集整個網站,但是那是一種非常耗費內存資源的過程,尤其是處理大型網站時,比較合適的工具就是用一個資料庫來存儲採集的資源,之前也說過。下面來說一下怎麼做。

網站地圖sitemap
網站地圖,又稱站點地圖,它就是一個頁面,上面放置了網站上需要搜索引擎抓取的所有頁面的鏈接(註:不是所有頁面,一般來說是所有文章鏈接。大多數人在網站上找不到自己所需要的信息時,可能會將網站地圖作為一種補救措施。搜索引擎蜘蛛非常喜歡網站地圖。
對於SEO,網站地圖的好處:
1.為搜索引擎蜘蛛提供可以瀏覽整個網站的鏈接簡單的體現出網站的整體框架出來給搜索引擎看;
2.為搜索引擎蜘蛛提供一些鏈接,指向動態頁面或者採用其他方法比較難以到達的頁面;
3.作為一種潛在的著陸頁面,可以為搜索流量進行優化;
4.如果訪問者試圖訪問網站所在域內並不存在的URL,那麼這個訪問者就會被轉到「無法找到文件」的錯誤頁面,而網站地圖可以作為該頁面的「准」內容。
數據採集
採集網站數據並不難,但是需要爬蟲有足夠的深度。我們創建一個爬蟲,遞歸地遍歷每個網站,只收集那些網站頁面上的數據。一般的比較費時間的網站採集方法從頂級頁面開始(一般是網站主頁),然後搜索頁面上的所有鏈接,形成列表,再去採集到的這些鏈接頁面,繼續採集每個頁面的鏈接形成新的列表,重復執行。
很明顯,這是一個復雜度增長很快的過程。加入每個頁面有10個鏈接,網站上有5個頁面深度,如果採集整個網站,一共得採集的網頁數量是105,即100000個頁面。
因為網站的內鏈有很多都是重復的,所以為了避免重復採集,必須鏈接去重,在Python中,去重最常用的方法就是使用自帶的set集合方法。只有「新」鏈接才會被採集。看一下代碼實例:
from urllib.request import urlopenfrom bs4 import BeautifulSoupimport repages = set()def getLinks(pageurl):globalpageshtml= urlopen("" + pageurl)soup= BeautifulSoup(html)forlink in soup.findAll("a", href=re.compile("^(/wiki/)")):if'href' in link.attrs:iflink.attrs['href'] not in pages:#這是新頁面newPage= link.attrs['href']print(newPage)pages.add(newPage)getLinks(newPage)getLinks("")
原理說明:程序執行時,用函數處理一個空URL,其實就是維基網路的主頁,然後遍歷首頁上每個鏈接,並檢查是否已經在全局變數集合pages裡面,如果不在,就列印並添加到pages集合,然後遞歸處理這個鏈接。
遞歸警告:Python默認的遞歸限制是1000次,因為維基網路的鏈接浩如煙海,所以這個程序達到遞歸限制後就會停止。如果你不想讓它停止,你可以設置一個遞歸計數器或者其他方法。
採集整個網站數據
為了有效使用爬蟲,在用爬蟲的時候我們需要在頁面上做一些事情。我們來創建一個爬蟲來收集頁面標題、正文的第一個段落,以及編輯頁面的鏈接(如果有的話)這些信息。
第一步,我們需要先觀察網站上的頁面,然後制定採集模式,通過F12(一般情況下)審查元素,即可看到頁面組成。
觀察維基網路頁面,包括詞條和非詞條頁面,比如隱私策略之類的頁面,可以得出下面的規則:
所有的標題都是在h1→span標簽里,而且頁面上只有一個h1標簽。
所有的正文文字都在div#bodyContent標簽里,如果我們想獲取第一段文字,可以用div#mw-content-text→p,除了文件頁面,這個規則對所有頁面都適用。
編輯鏈接只出現在詞條頁面上,如果有編輯鏈接,都位於li#ca-edit標簽的li#ca-edit→span→a裡面。
調整一下之前的代碼,我們可以建立一個爬蟲和數據採集的組合程序,代碼如下:
import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)try:print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id="ca-edit").find("span").find("a").attrs['href'])except AttributeError:print("頁面缺少屬性")for link in soup.findAll("a", href =re.compile("^(/wiki/)")):if 'href' in link.attrs:#這是新頁面newPage = link.attrs['href']print("------------------\n"+newPage)
這個for循環和原來的採集程序基本上是一樣的,因為不能確定每一頁上都有所有類型的數據,所以每個列印語句都是按照數據在頁面上出現的可能性從高到低排列的。
數據存儲到MySQL
前面已經獲取了數據,直接列印出來,查看比較麻煩,所以我們就直接存到MySQL裡面吧,這里只存鏈接沒有意義,所以我們就存儲頁面的標題和內容。前面我有兩篇文章已經介紹過如何存儲數據到MySQL,數據表是pages,這里直接給出代碼:
import reimport datetimeimport randomimport pymysqlconn = pymysql.connect(host = '127.0.0.1',port = 3306, user = 'root', passwd = '19930319', db = 'wiki', charset ='utf8mb4')cur = conn.cursor()cur.execute("USE wiki")#隨機數種子random.seed(datetime.datetime.now())#數據存儲def store(title, content):cur.execute("INSERT INTO pages(title, content)VALUES(\"%s\", \"%s\")", (title, content))cur.connection.commit()def getLinks(articleUrl):html = urlopen("" + articleUrl)title = soup.find("h1").get_text()content =soup.find("div",{"id":"mw-content-text"}).find("p").get_text()store(title, content)returnsoup.find("div",{"id":"bodyContent"}).findAll("a",href=re.compile("^(/wiki/)((?!:).)*$"))#設置第一頁links =getLinks("/wiki/Kevin_Bacon")try:while len(links)>0:newArticle = links[random.randint(0, len(links)-1)].attrs['href']print (newArticle)links = getLinks(newArticle)finally:cur.close()conn.close()
小結
今天主要講一下Python中遍歷採集一個網站的鏈接,方便下面的學習。
希望通過上面的操作能幫助大家。如果你有什麼好的意見,建議,或者有不同的看法,我都希望你留言和我們進行交流、討論。

閱讀全文

與獲取全網網站列表python相關的資料

熱點內容
雲計算伺服器貴州雲空間 瀏覽:33
登錄伺服器login輸入什麼 瀏覽:878
三點指標公式源碼 瀏覽:544
黑馬程序員fetch教程 瀏覽:442
不用編程的游戲引擎 瀏覽:533
點菜pdf 瀏覽:82
聖經pdf下載 瀏覽:291
如何列印到pdf文件 瀏覽:557
石碣CNC編程 瀏覽:553
程序員那麼可愛31集上中下完整版 瀏覽:819
有什麼動漫app是可以免費看的 瀏覽:143
程序員語言有多少種 瀏覽:198
linux系統對硬碟分區 瀏覽:267
php7性能優化總結 瀏覽:820
pdf文本格式轉換器 瀏覽:116
androidmap排序 瀏覽:450
php類型自動 瀏覽:213
一鍵apk反編譯提取視頻文件 瀏覽:981
linuxshell釋放緩存命令 瀏覽:72
路由器伺服器主機名怎麼設置 瀏覽:992