簡單爬蟲思路

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', '北京十月文藝出版社', 

'有時深居簡出,有時逍遙浪蕩;裝得了高冷,賣得了嗲萌;有時慵懶散漫,有時雷厲風行;我們愛它寵它,卻可能永遠不會懂它……——只有貓,知道一切。張悅然出品《鯉·貓知道一切》,攜手時下活力四溢的人氣創作者和他們的貓主子,用趣味橫生的故事,讓貓告訴你一切——◇深度訪談張悅然, 身爲“貓奴”二十年,揭祕“貓的法則”◇超人氣日籍華語作家吉井忍◇旅日文藝...')


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章