用python分析《錦衣之下》中的社交網路(一)

2021-10-21 05:59:42 字數 2066 閱讀 6277

一共爬取55集,需要對每一集傳送請求獲得頁面,經過分析發現除了第一集url字尾是76253.html形式,其餘集都是76253_{}.html的形式

於是只對第一集單獨做一下處理

爬蟲的**(pachong.py)如下:

import requests

from lxml import etree

# 獲取到分頁url的乙個統一格式

url_all =

''# 請求頭

headers =

defget_url_list

(url)

:'''獲取url列表 用於分頁獲取內容'''

# 獲取55集

url_list =

[url.

format

(i)for i in

range(2

,56)]

url_list.insert(0,

'')# 第一集

return url_list

defget_page_etree

(url, headers)

:'''得到頁面的etree物件'''

html_obj = requests.get(url=url, headers=headers)

# 根據url請求頁面,獲取頁面響應物件html_obj

html_obj = html_obj.content.decode(

'gbk'

)# 解決亂碼問題

tree = etree.html(html_obj)

# 轉化為頁面的etree物件

return tree

defget_data

(tree)

:"""獲取一頁的資料"""

data = tree.xpath(

'.//div[@class="ndfj"]/p/text()')[

:-1]

content =

''for para in data:

content = content + para

return content

defwrite_txt

(filename, content)

:"""寫入txt檔案"""

f =open

(filename,

'w')

f.write(content)

f.close(

)# 主程式部分

# 獲取url列表 用於分頁爬取

url_list = get_url_list(url_all)

for i, url in

enumerate

(url_list)

:# 獲取每一頁的列表頁etree物件

tree = get_page_etree(url=url,headers=headers)

# 得到所有資料追加到data中

content = get_data(tree)

if(content)

:# 持久化儲存

# print(content)

filename =

'e:/pycharm project/underpower/content/'

+str

(i+1)+

'.txt'

write_txt(filename, content)

# 寫入檔案中

print

('第'

,i +1,

'集 爬取成功!'

)else

:print

('第'

, i +1,

'集 失敗!!!'

)

形成檔案(擷取了部分):

待更新···

python中defaultdict的用法詳解

當我使用普通的字典時,用法一般是dict 新增元素的只需要dict element value即,呼叫的時候也是如此,dict element 但前提是element字典裡,如果不在字典裡就會報錯,如 這時defaultdict就能排上用場了,defaultdict的作用是在於,當字典裡的key不存...

python中defaultdict的用法

當使用普通的字典時,用法一般是dict 新增元素的只需要dict element value即,呼叫的時候也是如此,dict element 但前提是element字典裡,如果不在字典裡就會報錯。這時defaultdict就能排上用場了,defaultdict的作用是在於,當字典裡的key不存在但被...

python講解 python中with用法講解

我們都知道開啟檔案有兩種方法 f open with open as f 這兩種方法的區別就是第一種方法需要我們自己關閉檔案 f.close 而第二種方法不需要我們自己關閉檔案,無論是否出現異常,with都會自動幫助我們關閉檔案,這是為什麼呢?我們先自定義乙個類,用with來開啟它 class fo...