1、預期獲取的資源的url
2、下載url的html源文件(文本形式)
3、從已下載的html源文件裏獲取標籤或內容(bs4函數(python3))
soup=BeautifulSoup #創建對象
body=soup.body #html基本框架形式、格式
data_main=body.find() #利用瀏覽器的審查元素 對應內容(部分)
for i, table_info in enumerate(tables): #利用enumerate添加序號
gsmc = tds[2].find('a').get_text() #根據索引找內容
4、給url提交參數
for keyword in KEYWORDS:
#url上提交的參數(類似於asp?id=1&sugtime=1503299916325)
paras = {'jl':args[0],'kw':keyword,'p':args[1]}
5、調用get_content(html)函數獲取預期資源
利用for循環遍歷下載下來的centent文本信息獲取預期資源
拓展:datetime獲得start/end time
爬取多個網頁或內容 可使用from multiprocessing import Pool
代碼部分
沒解決(刪去列表元素兩邊的空格)
import requests,re
from requests.exceptions import ReadTimeout,HTTPError,RequestException
try:
#爬蟲部分
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}
response = requests.get('url',headers=headers,timeout=10)
print('請求成功! 狀態碼%s'%response.status_code)
html=response.text
html1=re.sub("\n*",'',html)
#newhtml=re.sub("\s*",'',html2)
#匹配書名 作者 出版日期 出版社 簡介 result1爲list類型,re.S解決爬取多行時的換行問題
result1 = re.findall('<div class="cover">.*?href=\"(.*?)\".*?<h4.*?>(.*?)</h4>.*?<span.*?>(.*?)</span>.*?<span.*?>(.*?)</span>.*?<span.*?>(.*?)</span>.*?<p.*?>(.*?)</p>',html1,re.S)
#result1 = re.search("alt=(.*?)>", html, re.S)#另一種定位書名
for result in result1:
print(result) #result爲tuple類型
#報錯部分
except ReadTimeout:
print('Time Out!!! 請檢查網絡)')
except HTTPError:
print('HTTP Error')
except RequestException:
print('Error!!!請求出錯了,不止一種繞過方法')
返回的結果:
請求成功! 狀態碼200
('url/subject/27107374/?icn=index-editionrecommend',
'鯉·貓知道一切 ',
'張悅然 主編',
'2017-8', '北京十月文藝出版社',
'有時深居簡出,有時逍遙浪蕩;裝得了高冷,賣得了嗲萌;有時慵懶散漫,有時雷厲風行;我們愛它寵它,卻可能永遠不會懂它……——只有貓,知道一切。張悅然出品《鯉·貓知道一切》,攜手時下活力四溢的人氣創作者和他們的貓主子,用趣味橫生的故事,讓貓告訴你一切——◇深度訪談張悅然, 身爲“貓奴”二十年,揭祕“貓的法則”◇超人氣日籍華語作家吉井忍◇旅日文藝...')