一共爬取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...