貼吧位址 :
python版本 : 3.6
瀏覽器: chrome
從網上爬下特定頁碼的網頁
對於爬下的頁面內容進行簡單的篩選分析
找到每一篇帖子的 標題、發帖人、發帖時間
將結果儲存到文字。
二、分析:
位址中這些都是中文字元,
%e7%94%9f%e6%b4%bb%e5%a4%a7%e7%88%86%e7%82%b8
在編碼之後就是: 生活大** 。
接著翻到貼吧的第二頁:
url:&pn=50`
這下就能通過簡單的url修改,達到翻頁的效果了。
開啟控制台,使用模擬點選工具快速定位到乙個單獨帖子的位置。(左上角的滑鼠箭頭圖示)
仔細觀察一下,發現每個帖子的內容都包裹在乙個li標籤內:
這樣只要快速找出所有的符合規則的標籤,
在進一步分析裡面的內容,最後篩選出資料就可以了。
四、**部分
1.抓取網頁的函式
import2.獲取頁面內容的函式requests
from bs4 import
beautifulsoup
import
time
#定義抓取頁面的函式
defget_html(url):
try:
r = requests.get(url,timeout=30) #
第二個引數為超時設定
r.raise_for_status() #
如果狀態碼不是200 則應發httoerror異常##
r.encoding = '
utf-8
'return
r.text
except
:
return
"error
"
def3.輸出到檔案的函式get_content(url):
comments = #
初始化乙個列表來儲存所有的帖子資訊
html = get_html(url) #
soup = beautifulsoup(html,'
lxml')
litags = soup.find_all('
li', class_='
j_thread_list clearfix')
#通過迴圈找到每個帖子裡需要的資訊
for li in
litags:
comment = {} #
初始化乙個字典來儲存文章資訊
#try:
comment['
title
'] = li.find('
a', class_='
j_th_tit
').text.strip()
comment[
'name
'] = li.find('
span
', class_='
tb_icon_author
').text.strip()
comment[
'time
'] = li.find('
span
', class_='
pull-right is_show_create_time
').text.strip()
#except:
#print('crawed error!')
return comments
def4.主函式呼叫outfile(comments):
with open(
'test.txt
','a+
',encoding='
utf-8
') as f:
for comment in
comments:
f.write(
''.format(comment['
title
'],comment['
name
'],comment['
time
']))
print('
當前頁面已爬取完成
')
def5.爬取結果main(base_url,deep):
url_list = #
將所有待爬取的url存入列表
for i in
range(0,deep):
&pn=
' + str(50 *i))
print('')
#迴圈寫入所有的資料
for url in
url_list:
content =get_content(url)
outfile(content)
print('
所有資訊都已儲存完畢!')
base_url = '
'deep = 100 #
設定需要爬取的頁面數量
if__name__ == '
__main__':
main(base_url,deep)
利用爬蟲爬取百度貼吧內容
coding utf 8 識別中文注釋的意思 import urllib.request 匯入urllib包中的request模組,主要是獲取網頁內容 def load page url 傳送url請求 返回url請求的靜態html頁面 user agent mozilla 5.0 windows ...
爬蟲爬取百度貼吧 python
本爬蟲是在pycharm中編寫完成,伺服器環境是ubuntu16.04,使用語言是python3,匯入的模組包是requests模組 匯入模組 import requests class tiebaspider object def init self self.base url self.head...
爬取百度貼吧
import urllib.request import urllib.parse import os,time 輸入貼吧名字 baname input 請輸入貼吧的名字 start page int input 請輸入起始頁 end page int input 請輸入結束頁 不完整的url ur...