亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

內容分享:微信公眾號文章爬取實(shí)戰

優(yōu)采云 發(fā)布時(shí)間: 2020-09-06 05:54

  微信公眾號文章抓實(shí)戰

  在之前的爬蟲(chóng)實(shí)戰中,我們基于關(guān)鍵詞搜索了相關(guān)的微信公眾號文章,并獲得了一系列相關(guān)的文章標題,鏈接等。找到文章后,我們需要保存,此實(shí)驗的目的是抓取微信公眾號文章文本內容。

  實(shí)驗環(huán)境

  python3

  主要使用的請求pyquery庫

  步驟分析

  本文使用CSDN公共帳戶(hù)的Python來(lái)抓取北京二手房數據,以分析北票人是否負擔得起房屋? 隨附完整的源代碼作為示例,

  在請求此頁(yè)面后,我們獲得文章標題,作者,官方帳戶(hù)信息和文章文本信息。由于我們要顯示文章的內容,因此為了確保文章文本的格式不變,我們提取html格式,最后將所有提取的內容合并為html格式,并通過(guò)瀏覽器保持文章的原創(chuàng )格式。

  應注意,文章中的所有圖片均來(lái)自互聯(lián)網(wǎng)。這些圖片無(wú)法通過(guò)打開(kāi)本地html進(jìn)行解析,因此我們提取了圖片鏈接,然后將其下載并保存到本地,并且html中的圖片鏈接替換了本地位置。

  在實(shí)驗過(guò)程中確定文章標題

  文章標題位于以下位置:

  

  1<br />2<br />

  <br />title = doc.find(&#39;.rich_media_title&#39;).text()<br />

  確認官方帳戶(hù)信息

  作者信息,官方帳戶(hù)的來(lái)源,微信帳戶(hù)以及官方帳戶(hù)的介紹都可以通過(guò)pyquery提?。?/p>

  

  1<br />2<br />3<br />4<br />

  # 微信公眾號<br />author = doc.find(&#39;#meta_content .rich_media_meta_text&#39;).text()<br />source = doc.find(&#39;#js_name&#39;).text()<br />source_info = doc.find(&#39;.profile_meta_value&#39;).text()<br />

  確認文章的內容

  文章的正文內容無(wú)法通過(guò)text()提取,因為提取的內容只是文本部分,而且缺少格式,因此顯示起來(lái)非常難看,因此我們使用html()保留身體部位的html元素:

  

  1<br />2<br />

  # 正文內容<br />content = doc.find(&#39;.rich_media_content&#39;)<br />

  提取所有圖像鏈接

  所有圖像鏈接都在img元素的data-src屬性中:

  

  1<br />2<br />3<br />4<br />5<br />6<br />

  # 所有圖片鏈接<br />pics_src = content.find(&#39;img&#39;).items()<br />for each in pics_src:<br /> if &#39;=&#39; in each.attr(&#39;data-src&#39;):<br /> pic.append(each.attr(&#39;data-src&#39;))<br />#print(pic)<br />

  下載圖片

  下載文章中的所有圖片并將其保存在本地文件中

  1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />

  def (title,url):<br /> print(url)<br /> pic_name = url.split(&#39;/&#39;)[4]<br /> pic_type = url.split(&#39;=&#39;)[1]<br /> response = requests.get(url,headers=random.choice(headers))<br /> try:<br /> if response.status_code == 200:<br /> file_dir = "{0}/{1}".format(os.getcwd(), title)<br /> if not os.path.isdir(file_dir):<br /> os.mkdir(file_dir)<br /> path = os.path.join(file_dir,pic_name+&#39;.&#39;+pic_type)<br /> if not os.path.exists(path):<br /> with open(path,&#39;wb&#39;) as f:<br /> f.write(response.content)<br /> except:<br /> pass<br />

  替換圖片

  將文本鏈接中的圖像鏈接替換為本地圖像的鏈接,但要注意,我們需要在img元素中添加src屬性,因為實(shí)際的圖像鏈接存儲在此處,然后存儲圖像的位置用作src屬性值。

  1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />

  for item in content.find(&#39;img&#39;).items():<br /> pic_url = item.attr(&#39;data-src&#39;)<br /> if &#39;=&#39; in pic_url:<br /> pic_name = pic_url.split(&#39;/&#39;)[4]<br /> pic_type = pic_url.split(&#39;=&#39;)[1]<br /> image = pic_name + &#39;.&#39; + pic_type<br /> item.add_class(&#39;src&#39;)<br /> item.attr(&#39;src&#39;,image)<br />

  生成index.html

  以html格式添加先前提取的文章標題,作者和官方帳戶(hù)信息以生成index.html,然后將其打開(kāi)以查看微信正文內容。

  1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />

  file_dir = "{0}/{1}".format(os.getcwd(), title)<br />path = os.path.join(file_dir,&#39;index.html&#39;)<br /><br />index = &#39;&#39;+title+&#39;

&#39;<br />index += &#39;&#39;+author+&#39;&#39;+source+&#39;

&#39;<br />index += &#39;&#39;+source_info+&#39;

&#39;<br />index += content<br />with open(path, &#39;wb&#39;) as f:<br /> f.write(index.encode(&#39;utf-8&#39;))<br />

  結果分析與解釋

  有關(guān)完整代碼,請參見(jiàn)微信2. py

  運行代碼:

  1<br />

  python https://mp.weixin.qq.com/s/QAwrisNuu1dThFbs__wF_Q<br />

  

  檢索到的index.html如下:

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久