導航:首頁 > 編程語言 > python3爬取網頁內容

python3爬取網頁內容

發布時間:2023-10-28 15:10:54

⑴ 如何用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這個框架進行數據的爬取,可以更方便一些,效率更高,當然,如果爬取的頁面比較復雜,像驗證碼、加密等,這時候就需要認真分析了,網上也有一些教程可供參考,感興趣的可以搜一下,希望以上分享的內容能對你有所幫助吧。

⑵ 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爬網頁

1、網路爬蟲基本原理
傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定
停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根
據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。
2、設計基本思路
正如你所說,先到微博登陸頁面模擬登錄,抓取頁面,從頁面中找出所有URL,選擇滿足要求的URL文本說明,模擬點擊這些URL,重復上面的抓取動作,直到滿足要求退出。
3、現有的項目
google project網站有一個項目叫做sinawler,就是專門的新浪微博爬蟲,用來抓取微博內容。網站上不去,這個你懂的。不過可以網路一下「python編寫的新浪微博爬蟲(現在的登陸方法見新的一則微博)「,可以找到一個參考的源碼,他是用python2寫的。如果用python3寫,其實可以使用urllib.request模擬構建一個帶cookies的瀏覽器,省去對cookies的處理,代碼可以更加簡短。
4、此外
看下網路爬蟲的網路,裡面很多比較深入的內容,比如演算法分析、策略體系,會大有幫助,從理論角度提升代碼的技術層次。

⑷ Python 爬蟲的入門教程有哪些值得推薦的

Python 爬蟲的入門教程有很多值得推薦的,以下是一些比較受歡迎和推薦的教程:

1.《精通 Python 網路爬蟲》:這本書是一本入門級的 Python 爬蟲教程,適合初學者學習。

bilibili上也有一些視頻教程。

⑸ 如何使用python3爬取1000頁百度百科條目

1 問題描述

起始頁面 ython包含許多指向其他詞條的頁面。悄隱通過頁面之間的鏈接訪問1000條網路詞條。

對啟悶廳每個詞條,獲取其標題和簡介。


可以看出,其他詞條的格式都遵循hcom/item/xxx的形式

3 實現

# coding=utf-8from urllib import requestfrom bs4 import BeautifulSoupimport reimport tracebackimport time

url_new = set()
url_old = set()
start_url = 'httpm/item/python'max_url = 1000def add_url(url):
if len(url_new) + len(url_old) > 1000: return
if url not in url_old and url not in url_new:
url_new.add(url)def get_url():
url = url_new.pop()
url_old.add(url) return urldef parse_title_summary(page):
soup = BeautifulSoup(page, 'html.parser')
node = soup.find('h1')
title = node.text
node = soup.find('div', class_='lemma-summary')
summary = node.text return title, summarydef parse_url(page):
soup = BeautifulSoup(page, 'html.parser')
links = soup.findAll('a', href=re.compile(r'/item/'))
res = set()
keprefix = 'htt..com'
for i in links:
res.add(keprefix + i['罩昌href']) return resdef write2log(text, name='d:/ke-urllib.log'):
with open(name, 'a+', encoding='utf-8') as fp:
fp.write(' ')
fp.write(text)if __name__ == '__main__':
url_new.add(start_url) print('working')
time_begin=time.time()
count = 1
while url_new:
url = get_url() try:
resp = request.urlopen(url)
text = resp.read().decode()
write2log('.'.join(parse_title_summary(text)))
urls = parse_url(text) for i in urls:
add_url(i) print(str(count), 'ok')
count += 1
except:
traceback.print_exc() print(url)
time_end=time.time() print('time elapsed: ', time_end - time_begin) print('the end.')

輸出結果

working1 ok
略983 ok984 ok
time elapsed: 556.4766345024109the end.

將urllib替換為第三方庫requests:

pip install requests

略if __name__ == '__main__':
url_new.add(start_url) print('working')
time_begin = time.time()
count = 1
while url_new:
url = get_url() try: with requests.Session() as s:
resp = s.get(url)
text = resp.content.decode() # 默認'utf-8'
write2log('.'.join(parse_title_summary(text)))
urls = parse_url(text) for i in urls:
add_url(i) print(str(count), 'ok')
count += 1
except:
traceback.print_exc() print(url)
time_end = time.time() print('time elapsed: ', time_end - time_begin) print('the end.')

輸出

略986 ok987 ok988 ok989 ok
time elapsed: 492.8088216781616the end.

一個通用的爬蟲架構包括如下四部分:

⑹ python爬蟲如何分析一個將要爬取的網站

爬取網頁數據,需要一些工具,比如requests,正則表達式,bs4等,解析網頁首推bs4啊,可以通過標簽和節點抓取扒拍數據。

正巧簡悶,我最近發布了一篇文章就是抓取網頁數據分析的,有完整的抓取步驟,你可以看一下?不好意思給自己打了一下廣春咐羨告?

閱讀全文

與python3爬取網頁內容相關的資料

熱點內容
用編譯語言開發軟體的過程 瀏覽:863
exe怎麼知道源碼 瀏覽:387
計算機怎麼實現可編程的 瀏覽:494
軒轅傳奇如何查看玩過的伺服器 瀏覽:39
凌陽單片機選型 瀏覽:480
android手機hosts 瀏覽:97
路由器l2tp伺服器地址是什麼 瀏覽:160
做解壓手套視頻 瀏覽:620
退役命令文件 瀏覽:676
linux遞歸查找文件 瀏覽:245
哪個app上才能看到免費的名門摯愛 瀏覽:839
mysql查看錶欄位的命令 瀏覽:523
ios里的文件夾怎麼用 瀏覽:166
壓縮銀行開戶時間表 瀏覽:429
銀行人員如何解壓 瀏覽:829
newfile命令快捷鍵 瀏覽:569
阿里雲物理伺服器 瀏覽:955
靈狐視頻app哪個好 瀏覽:259
大廠退役程序員自述 瀏覽:254
linux命令watch 瀏覽:889