日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

起点中文网越来越火爆了,我利用Python直接把整站数据采集完毕

發布時間:2023/12/14 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 起点中文网越来越火爆了,我利用Python直接把整站数据采集完毕 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要講解爬蟲相關的知識如:http、網頁、爬蟲法律等,讓大家對爬蟲有了一個比較完善的了解和一些題外的知識點。

今天這篇文章,我們從今天開始就正式進入實戰階段,后面將會有更多的實際案例。

為大家講解了HTTP原理,很多人好奇:好好的講爬蟲和HTTP有什么關系?其實我們常說的爬蟲(也叫網絡爬蟲)就是使用一些網絡協議發起的網絡請求,而目前使用最多的網絡協議便是HTTP/S網絡協議簇。

一、Python有哪些網絡庫

在真實瀏覽網頁我們是通過鼠標點擊網頁然后由瀏覽器幫我們發起網絡請求,那在Python中我們又如何發起網絡請求的呢?答案當然是庫,具體哪些庫?豬哥給大家列一下:

  • Python2: httplib、httplib2、urllib、urllib2、urllib3、requests
  • Python3: httplib2、urllib、urllib3、requests

Python網絡請求庫有點多,而且還看見網上還都有用過的,那他們之間有何關系?又該如何選擇?

  • httplib/2:這是一個Python內置http庫,但是它是偏于底層的庫,一般不直接用。而httplib2是一個基于httplib的第三方庫,比httplib實現更完整,支持緩存、壓縮等功能。一般這兩個庫都用不到,如果需要自己 封裝網絡請求可能會需要用到。
  • urllib/urllib2/urllib3:urlliib是一個基于httplib的上層庫,而urllib2和urllib3都是第三方庫,urllib2相對于urllib增加一些高級功能,如:HTTP身份驗證或Cookie等,在Python3中將urllib2合并到了urllib中。urllib3提供線程安全連接池和文件post等支持,與urllib及urllib2的關系不大。
  • requests:requests庫是一個基于urllib/3的第三方網絡庫,它的特點是功能強大,API優雅。由上圖我們可以看到,對于http客戶端python官方文檔也推薦我們使用requests庫,實際工作中requests庫也是使用的比較多的庫。最后,如果你的時間不是很緊張,并且又想快速的python提高,最重要的是不怕吃苦,建議你可以架尉?信(同音):2763177065 ,那個真的很不錯,很多人進步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

綜上所述,我們選擇選擇requests庫作為我們爬蟲入門的起點。另外以上的這些庫都是同步網絡庫,如果需要高并發請求的話可以使用異步網絡庫:aiohttp,這個后面豬哥也會為大家講解。

二、requests介紹

**希望大家永遠記住:學任何一門語言,都不要忘記去看看官方文檔。**也許官方文檔不是最好的入門教程,但絕對是最新、最全的教學文檔!

1.首頁

requests的官方文檔(目前已支持中文)

從首頁中讓HTTP服務人類這幾個字中我們便能看出,requests核心宗旨便是讓用戶使用方便,間接表達了他們設計優雅的理念。

注:PEP 20便是鼎鼎大名的Python之禪。

警告:非專業使用其他 HTTP 庫會導致危險的副作用,包括:安全缺陷癥、冗余代碼癥、重新發明輪子癥、啃文檔癥、抑郁、頭疼、甚至死亡。

2.功能特性

都說requests功能強大,那我們來看看requests到底有哪些功能特性吧:

  • Keep-Alive & 連接池
  • 國際化域名和 URL
  • 帶持久 Cookie 的會話
  • 瀏覽器式的 SSL 認證
  • 自動內容解碼
  • 基本/摘要式的身份認證
  • 優雅的 key/value Cookie
  • 自動解壓
  • Unicode 響應體
  • HTTP(S) 代理支持
  • 文件分塊上傳
  • 流下載
  • 連接超時
  • 分塊請求
  • 支持 .netrc

requests 完全滿足今日 web 的需求。Requests 支持 Python 2.6—2.7以及3.3—3.7,而且能在 PyPy 下完美運行

三、安裝requests

pip install requests

如果是pip3則使用

pip3 install requests

如果你使用anaconda則可以

conda install requests

如果你不想用命令行,可在pycharm中這樣下載庫

四、爬蟲流程

下圖是豬哥之前工作總結的一個項目開發流程,算是比較詳細,在開發一個大型的項目真的需要這么詳細,不然項目上線出故障或者修改需求都無法做項目復盤,到時候程序員就有可能背鍋祭天。。。

言歸正傳,給大家看項目的開發流程是想引出爬蟲爬取數據的流程:

  • 確定需要爬取的網頁
  • 瀏覽器檢查數據來源(靜態網頁or動態加載)
  • 尋找加載數據url的參數規律(如分頁)
  • 代碼模擬請求爬取數據
  • 起點中文網創建于2002年5月,是國內最大文學閱讀與寫作平臺之一,是國內領先的原創文學門戶網站,隸屬于國內最大的數字內容綜合平臺——閱文集團旗下。最后,如果你的時間不是很緊張,并且又想快速的python提高,最重要的是不怕吃苦,建議你可以架尉?信(同音):2763177065 ,那個真的很不錯,很多人進步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

    總體思路分為三步:

    1.分析網頁結構,利用xpath表達式爬取到所有的文章名字與鏈接,并按文章名字生成文件夾。

    import requestsfrom urllib import requestfrom lxml import etreeimport osheader = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}class Spider(object): def start_request(self): url = 'https://www.qidian.com/all' req = request.Request(url,headers=header) html= request.urlopen(req).read().decode('utf-8') html=etree.HTML(html) bigtit_list=html.xpath('//div[@class="book-mid-info"]/h4/a/text()') ##爬取所有的文章名字 bigsrc_list = html.xpath('//div[@class="book-mid-info"]/h4/a/@href') print(bigtit_list) print(bigsrc_list) for bigtit,bigsrc in zip(bigtit_list,bigsrc_list): if os.path.exists(bigtit)==False: os.mkdir(bigtit) self.file_data(bigsrc,bigtit)

    2.利用文章鏈接,爬取每個章節名字與鏈接

    def file_data(self,bigsrc,bigtit): #詳情頁 url="http:"+bigsrc req = request.Request(url, headers=header) html = request.urlopen(req).read().decode('utf-8') html = etree.HTML(html) print(html) Lit_tit_list = html.xpath('//ul[@class="cf"]/li/a/text()') #爬取每個章節名字 Lit_href_list = html.xpath('//ul[@class="cf"]/li/a/@href') #每個章節鏈接 for tit,src in zip(Lit_tit_list,Lit_href_list): self.finally_file(tit,src,bigtit)

    3.利用每個章節的鏈接,生成帶有章節名稱的txt文件,并保存到每個文章文件夾下。

    def finally_file(self,tit,src,bigtit): url = "http:" + src req = request.Request(url, headers=header) html = request.urlopen(req).read().decode('utf-8') html = etree.HTML(html) text_list = html.xpath('//div[@class="read-content j_readContent"]/p/text()') text = "\n".join(text_list) file_name = bigtit + "\\" + tit + ".txt" print("正在抓取文章:" + file_name) with open(file_name, 'a', encoding="utf-8") as f: f.write(text)spider=Spider()spider.start_request()

    成功!

    生成的文件夾如下圖:

    總結

    以上是生活随笔為你收集整理的起点中文网越来越火爆了,我利用Python直接把整站数据采集完毕的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。