知識點:
python自帶:urllib、urllib2,第三方:requests
目前使用requests和scrapy框架比較多,問到自帶庫的比較少,一般了解就可以,主要是講requests
response.content返回的是bytes型別(獲取,檔案)。
設定請求不用ssl證書驗證
設定超時
配合狀態碼判斷是否請求成功
import requests
from bs4 import beautifulsoup
# 目標url
url =
''headers =
#翻頁操作
for i in
range(1
,10000):
url_i =
'/{}//0/0/2/2.html'
.format
(i) response_i = requests.get(url_i, headers=headers)
.text
# 判斷最後一頁
if response_i is
none
:break
# 獲取第i個頁面的url、response類、html、soup,以及該頁面所有對應的src
soup_i = beautifulsoup(response_i,
'lxml'
) data_list = soup_i.find(
'div',)
# 二次篩選,獲取所有a標籤
for i in data_list.find_all(
'a')
: book_url =
''+ i[
'href'
]#print(book_url)
# 再次請求獲取**內容頁
book_content = requests.get(book_url)
.text
# print(book_content)
soup = beautifulsoup(book_content,
'lxml'
)# **名稱
title = soup.find(
'h2',)
.text
#封面#cover = soup.find('img',src = re.compile(r'^https://bfimg'))
src = soup.find_all(
'img'
) cover = src[0]
.get(
'data-original'
)# 作者
author = soup.find(
'span',)
.text
# 章節數
chapter_cnt = soup.find(
'pan',)
.text
# 字數
word_cnt = soup.find(
'span',)
.text
# 是否已完成,0**中,1已完結
is_finished = soup.find(
'span',)
.text
if is_finished ==
'完本'
: is_finished =
'1'else
: is_finished =
'0'# 所屬分類,多個用,分開
cate_ids = soup.find(
'p',
).text
cate_ids_list = cate_ids.split(
) cate_ids = cate_ids_list[0:
-1]for i in cate_ids:
cate_ids = i
# 介紹
desc = soup.find(
'div',)
.text
# 新增時間
create_time =
'0'# 更新時間
update_time = soup.find(
'div',)
.text
# print(cate_ids)
#把一本書的資料儲存到乙個列表中
book_list =
print
(book_list)
#列表轉為字串寫入檔案中
book_str =
' '.join(book_list)
#儲存資料
with
open
('shanhu.txt'
,'a'
,encoding=
'utf-8'
)as f:
f.write(book_str)
f.write(
'\r\n'
)
真實 Python 爬蟲面試題
閱讀文字大概需要 5 分鐘。就在昨天我面試了,來到上海之後面試的第一家公司,面試過程挺順利,不出意外今天下午就會收到 offer。面試完之後,我走在路上,整個人都是在傻笑的狀態,路人一臉關愛智障的眼神,但我還是非常的開心。自己一路自學過來,不知道遇到多少 bug,不知道有多少個深夜,還在敲 不知道有...
真實 Python 爬蟲面試題
閱讀文字大概需要 5 分鐘。就在昨天我面試了,來到上海之後面試的第一家公司,面試過程挺順利,不出意外今天下午就會收到 offer。面試完之後,我走在路上,整個人都是在傻笑的狀態,路人一臉關愛智障的眼神,但我還是非常的開心。自己一路自學過來,不知道遇到多少 bug,不知道有多少個深夜,還在敲 不知道有...
python基礎面試題(1)
一.基礎面試題 1.中要修改不可變資料會出現什麼問題,丟擲什麼異常?答 不能正常執行,會丟擲typeerror型別的錯誤 2.a 1,b 2 不使用中間變數互動a,b的值?答 第一種方法 a a b b a b a a b 第二中方法 a,b b,a 第三種方法 a a b b b a a a b ...