爬取汽車之家新聞

爬取汽車之家新聞

  • ?偽造瀏覽器向某個地址發送Http請求,獲取返回的字符串
    • response = requests.get(url = '地址')
    • response.content
    • response.encoding = apparent_encoding
    • response.text
  • bs4,解析HTML格式的字符串
    • soup = BeautifulSoup('<html>...</html>', "html.parser")
    • soup.find(name='標簽名')
    • soup.find(name='標簽名', id='il')
    • soup.find(name='標簽名', _class='il')
    • soup.find(name='div', attrs={'id': 'auto-channel-lazyload-article', 'class': 'id'})

?

一、下載頁面

首先抓取要爬的頁面

import requestsret = requests.get(url="https://www.autohome.com.cn/news/")

此時print(ret)返回的是一個對象:?<Response [200]>?

然后再print(ret.content)輸出如下:

上圖看出返回的是整個網頁文本,不過是以字節形式的文本。

?這不是我們需要的,接著再改用print(ret.text)輸出如下:

此時,出現了惡心的亂碼!!!,我們再用encoding對ret進行編碼:

ret.encoding = 'gbk'

這樣可能不是很智能,那我們可以換一種方式:

ret.encoding = ret.apparent_encoding

在這里,print(ret.apparent_encoding)可以自動獲取網頁的編碼格式。此時print(ret.text)已經能正常顯示網頁了:

?二、解析:獲取想要的指定內容

此時我們分析汽車之家新聞頁面:

初步判斷,新聞部分位于id為"auto-channel-lazyload-article"的div下面的li標簽中,之所以選擇id是因為class名稱可能不是唯一的,不好用于過濾

此時,我們需要在py文件頭部導入bs4模塊,這個模塊主要用來幫我們解析整個html頁面,相當于正則表達式的功能

from bs4 import BeautifulSoup

?用html解析器對網頁進行解析

soup = BeautifulSoup(ret.text, 'html.parser')

我們用print(type(soup))輸出soup的類型得到:?<class 'bs4.BeautifulSoup'>?,可以看出soup由文本變成對象了。

?提取出新聞所在的div:

div = soup.find(name='div',id='auto-channel-lazyload-article')

我們先print(div)查看下結果:

然后再對這個div對象進行二次解析,我們最終要拿到里面的li,用find_all找所有的li

li_list = div.find_all(name='li')

再次print(li_list)輸出:

可以看出li_list已經是一個列表了。我們需要先找出里面的h3標簽

for li in li_list:h3 = li.find(name='h3')

print(h3)查看下h3標簽

可以看出上圖有一個為None的地方,我們返回網頁查看源碼

目測這里應該是一個廣告位,這里我們可以采取if判斷直接過濾掉

for li in li_list:h3 = li.find(name='h3')if not h3:continueprint(h3)

在這里h3是一個對象,我們最終需要得到h3的文本

print(h3.text)

目前我們只是取得了每個li標簽的新聞標題,再獲取新聞正文和超鏈接

for li in li_list:h3 = li.find(name='h3')if not h3:continueprint(h3.text)p = li.find(name='p')print(p.text)a = li.find('a')    # 不寫name默認取第一個aprint(a.attrs)  # attrs拿取所有屬性

對輸出進行優化:

    print(h3.text, a.get('href'))print(p.text)print('\n')

我們順便爬下圖片吧

    img = li.find('img')# print(img)src = img.get('src')# print(src)file_name = src.rsplit('__', maxsplit=1)[1]# print(file_name)ret_img = requests.get(url='https:' + src)with open(file_name, 'wb') as f:f.write(ret_img.content)print('\n')

此時在自己當前路徑下,已經下載了很多圖片

?

轉載于:https://www.cnblogs.com/Black-rainbow/p/9214707.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277760.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277760.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277760.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac OS使用技巧之五:Macbook鍵盤的使用基礎技巧

使用過蘋果電腦的朋友應該都知道蘋果的臺式機和筆記本鍵盤布局有自己獨有的風格&#xff0c;Mac里面的鍵盤細節就值得我們深深推敲。這篇博客將為一些Mac的新手&#xff0c; 詳細介紹一下蘋果電腦鍵盤的基礎使用技巧&#xff0c;筆者目前的系統是Mac mavericks。Mac OS按鍵符號…

需求工程week1

這是第一周&#xff0c;我們小組確定了項目工程的主題&#xff0c;對于需求不清楚的地方與甲方進行了溝通。簡單制定了下一周的工作計劃。 以下是詳細說明&#xff1a; &#xff08;1&#xff09;項目背景和范圍 ①背景&#xff1a;在急需志愿活動的今天&#xff0c;在部分個人…

3- 快速上手Linux玩轉典型應用- Linux準備工作

4- 準備工作 查看ip ifconfig # 查看ip地址 ipaddr # ip vi /etc/sysconfig/network-scripts/ifcfg-xxyum install net-tools最小化安裝的server版本沒有ifconfig。使用ip addr tab補全鍵一次補全。兩次提示。 使用pageup pagedown鍵&#xff0c;翻動。 編輯我們的配置文件將o…

Mac OS使用技巧之六:鼠標和觸摸板的使用

本篇說一下Macbook里面鼠標和觸摸板的使用&#xff0c;如果你的電腦是臺式機&#xff0c;那么使用觸摸板可能需要你自己配備Magic Trackpad。在我看來&#xff0c;Mac OS的日常使用基本是不需要鼠標的。Mac OS與觸摸板的完美契合是windows系統永遠無法企及的。但不排除有些情況…

go run 和 go build 和 go install 命令區別

go run&#xff1a; go run 編譯并直接運行程序&#xff0c;它會產生一個臨時文件&#xff08;但實際不存在&#xff0c;也不會生成 .exe 文件&#xff09;&#xff0c;直接在命令行輸出程序執行結果&#xff0c;方便用戶調試。 注意點&#xff1a;需要在main包下執行go run &a…

vue 實例數據綁定 指令 事件

vue.js的模式 mvvm 模式視圖層與數據層的雙向綁定環境搭建 其一引用 <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 復制代碼引用之后/創建vue實例 這個實例是整個程序的啟動入口 <script src"https://cdn.jsdelivr.ne…

Mac OS使用技巧之七:個性化自己的Mac OS主界面

今天來講一下個性化自己的主界面。Mac OS的亮點之一就在于它精煉美觀的主界面。 Mac OS的界面跟我們熟悉的windows是截然不同的&#xff0c;賦予了桌面新的定義。 能夠完美的體現一張牛X的壁紙是有多么的吸引人。&#xff08;圖不是我盜的哦&#xff0c;第一張圖片加了自己水…

[Codeforces700E Cool Slogans]

簡要題意 給出一個長度為n的字符串s[1]&#xff0c;由小寫字母組成。定義一個字符串序列s[1....k],滿足性質&#xff1a;s[i]在s[i-1] (i>2)中出現至少兩次&#xff08;位置可重疊&#xff09;&#xff0c;問最大的k是多少&#xff0c;使得從s[1]開始到s[k]都滿足這樣一個性…

Google的“機器人情結”:兩次合計36億美元的人工智能收購

據Re/code1月27日消息&#xff0c;Google將收購&#xff08;據知情人透露約4億美元&#xff0c;未經證實&#xff09;一家人工智能公司DeepMind。DeepMind公司位于英國倫敦&#xff0c;由神經系統科學家DemisHassabis、網絡語音通訊軟件Skype開發者JaanTallin和研究人員ShaneLe…

Mac OS使用技巧之八:Dock欄使用技巧

本篇博客&#xff0c;我們來講一下Mac OS的標志性的東西————Dock。在我們的第七篇系列博客里面已經提及了神秘強大的Dock欄。這是蘋果的一大亮點。Dock中間偏右側有一條淺淺的分割線。分割線左側是APP的圖標&#xff0c;在運行的下面會有白色光點。分割線右側是堆棧&#x…

man:命令幫助使用手冊

man&#xff1a;在linux中作為手冊存在&#xff0c;含義就是命令的使用手冊 在man命令的幫助使用手冊中&#xff0c;其中的常用按鍵及其用途如下所示 按鍵 用處 空格鍵 向下翻一頁 PaGe down …

報錯,但不影響運行ERROR: JDWP Unable to get JNI 1.2 environment, jvm-GetEnv() return code = -2...

eclipse 3.4jdk1.6 編譯正常通過&#xff0c;運行debug模式時報錯 ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code -2 JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820] 查找該錯誤原因。發現是重定向輸出…

Mac OS使用技巧之九:Mission Control和DIY自己的Dashboard

一、Mission Control使用技巧Mac OS X為我們提供了更加無縫和流暢的多桌面、應用管理和切換&#xff0c;Mission Control。之前的教程里面也提到過。觸摸板四指向上平移&#xff08;可以在系統偏好里面設成三指&#xff09;&#xff0c;就可以調出高端大氣的Mission Control。包…

【NOIP必備攻略】 基本noilinux使用方法

現在linux系統已經成為了NOIP競賽的一大操作系統&#xff0c;如果連最基礎的操作都不會&#xff0c;那就更別提怎么得分了&#xff0c;萬一操作失誤&#xff0c;可就爆零了。所以小編特意發這樣一篇博客&#xff0c;教你快速上手noilinux&#xff01; ▎ 常用操作 1&#xff09…

1067: 有問題的里程表

[提交][狀態][討論版][命題人:admin]題目描述 某輛汽車有一個里程表&#xff0c;該里程表可以顯示一個整數&#xff0c;為該車走過的公里數。然而這個里程表有個毛病&#xff1a;它總是從3變到5&#xff0c;而跳過數字4&#xff0c;里程表所有位&#xff08;個位、 十位、百位等…

Mac OS使用技巧之十:Finder的詳細使用方法

Finder就是Mac OSX中資源管理器&#xff0c;我們用它來管理我們所有的文件。先來說一下Finder的打開方法吧&#xff0c;&#xff08;1&#xff09;單擊Dock上的Finder圖標。&#xff08;2&#xff09;快捷鍵為【command】向上方向鍵或者【command】【N】下面我們來看一下10.9 M…

css中圖片有縮放和轉動效果

現在html中利用div來包裹住一張圖片。 <div class"xuanzhuan"><img src"images/top.png" alt""></div> 然后在css中利用固定定位來將圖片固定好&#xff0c;再利用動畫的效果即可出來。 .xuanzhuan {position: fixed;top: 20%…

7.6 yum更換國內源 7.7 yum下載rpm包 7.8/7.9 源碼包安裝

2019獨角獸企業重金招聘Python工程師標準>>> 7.6.yum更換國內源 自定義yum源&#xff1a; [rootbogon ~]# cd /etc/yum.repos.d [rootbogon yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo …

Mac OS使用技巧之十一:隱藏launchpad中圖標的方法

開講前注釋&#xff1a;一個逗比公司&#xff1d;adobe公司&#xff0c;成立于1982年&#xff0c;總部位于加利福尼亞。Launchpad是Mac系統的一大特色&#xff0c;借鑒了IOS系統的APP存放方式&#xff0c;圖形化的瀏覽應用程序&#xff0c;而非是在文件中死板的瀏覽&#xff0c…

MySQL數據庫入門到高薪培訓教程(從MySQL 5.7 到 MySQL 8.0)

一、MySQL數據庫入門到高薪培訓視頻教程&#xff08;從MySQL5.7到MySQL8.0&#xff09; 本套MySQL學習教程地址&#xff1a; https://edu.51cto.com/course/18034.html 為滿足想快速入門學習MySQL的學員&#xff0c;風哥設計一套比較全面的MySQL新手快速入門學習視頻課程。 本…