91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何爬取指定百度搜索的內容并提取網頁的標題內容

發布時間:2021-10-26 09:50:05 來源:億速云 閱讀:782 作者:柒染 欄目:大數據

Python如何爬取指定百度搜索的內容并提取網頁的標題內容,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

hello,大家好。今天為大家帶來的是之前分享過的requests庫與lxml庫的結合使用案例一:指定百度搜索的內容并提取網頁的標題內容。好的,廢話不多說,直接上主菜。

第一步:完成初步分析

下面我們來完成我們的第一步,分析我們的目標。大家可千萬不要小看這一步哦,因為我們只有思路清晰才能在較短的時間里面寫出漂亮的代碼。

1.確定url:

首先,我們想要請求網頁,必須知道我們的url(即網址)是什么。下面,我打開Chrome(谷歌)瀏覽器,并且打開百度頁面,指定搜索“python”,得到下圖結果:

Python如何爬取指定百度搜索的內容并提取網頁的標題內容

Python如何爬取指定百度搜索的內容并提取網頁的標題內容

第二步:完成獲取頁面程序主體框架

寫python程序,有時候很矛盾,是用面向對象呢?還是面向過程呢?其實都隨意(我比較隨意,因為沒有人要求我必須使用什么寫),這里我采取面向對象的方式來寫這個程序。

1.首先,我們需要寫出大體的框架:

#文件一
import requests

class MySpider(object):
    def __init__(self):
        self.url = 'http://www.baidu.com/s?wd={name}' #這里采用format的格式化輸入
        self.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
        }

    def main(self):
        #處理url
        self.target = input('請輸入你感興趣的內容:')
        self.url = self.url.format(name=self.target)  #重新構建url,大家測試的時候可以嘗試打印
        #請求
        text = self.get() 
        #寫入文件
        self.write(text)

    def get(self):
        '''請求并返回網頁源代碼'''
        pass
    
    def write(self,text):
        '''將返回的源代碼寫入文件,等待之后解析用'''
        pass

if __name__ == '__main__':
    spider = MySpider()
    spider.main()

2.為什么需要寫入文件,而不直接解析:

這里有幾個原因。

1>我們寫代碼,一般來說都不可能一次寫成功,總是需要修改和測試的。平時我們寫代碼,自然可以隨意的測試運行,都可以檢測代碼是否正確,但是爬蟲卻不能這樣。因為如果你在較短時間內訪問了網站次數過多,可能會導致網站對你做出一些限制性舉動,比如:增加驗證碼判斷你是否為人類,嚴重點的短時間內封禁你的ip。因此,我們將網頁源代碼寫入文件,這樣在之后寫解析代碼的時候就不需要重新去訪問網站了。

2>我們以html的形式寫入文件,可以用瀏覽器打開這個文件,可以比較清晰的看出這個文件是否為我們需要爬取的文件。如下圖是我爬取后存入的文件以谷歌瀏覽器打開的結果:

Python如何爬取指定百度搜索的內容并提取網頁的標題內容

完成獲取頁面程序:

下面我們來完成獲取頁面的程序代碼:

1.完成請求函數get:

def get(self):
        '''請求并返回網頁源代碼'''
        response = requests.get(self.url,self.headers)
        if response.status_code == 200:
            return response.text

這個沒什么好說的,是最基礎的代碼。

2.完成寫入文件函數write:

def write(self,text):
 with open('%s.html'%self.target,'w',encoding='utf-8') as f:     #這里的self.target為輸入搜索的內容
  f.write(text)

這個也只是文件的基本操作,沒什么好講解的地方,只是注意我們這里存入的為html文件,而不是txt文件。

3.檢測是否正常運行以及是否為我們想要的結果:

這里檢測的方式我前面已經提及,就是瀏覽器打開相應的頁面即可。如下圖操作:

Python如何爬取指定百度搜索的內容并提取網頁的標題內容

說明程序正常運行。

完成解析頁面的大體框架和局部內容:

1.完成解析頁面程序的框架:

from lxml import etree

class Parse(object):
    def __init__(self):
        #讀取內容并且初始化
        with open('python.html','r',encoding='utf-8') as f:
            self.html = etree.HTML(f.read())

    #解析頁面
    def parse(self):
        pass

if __name__ == '__main__':
    parser = Parse()
    parser.parse()

2.完成解析函數parse:

下面我們來完成最后一步,解析函數的敲寫。

首先我們需要分析下,我們想要獲取的內容在什么標簽里面。分析過程如圖(個人認為這部分比較重要,因為我初學的時候主要困惑于兩點:如何處理失敗的請求,解析的思路是什么

Python如何爬取指定百度搜索的內容并提取網頁的標題內容

好的,分析清楚了我們需要的內容在哪里之后,可以使用lxml來寫代碼了,如下:

def parse(self):
    #獲取url
    h4_tags = self.html.xpath('//h4[contains(@class,"t")]//text()')
    h4_tags = [i.strip() for i in h4_tags]
    print(h4_tags)

下面要做的工作就是處理這些字符串,但是這個并不是我們的重點,并且這些數據并不重要,所以就不處理了。

總結與全文代碼:

1.首先附上全文代碼:

# -*- coding:utf-8 -*-

#獲取網頁內容文件
import requests

class MySpider(object):
    def __init__(self):
        self.url = 'http://www.baidu.com/s?wd={name}'
        #寫清楚獲取headers途徑
        self.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
        }

    def main(self):
        #處理url
        self.target = input('請輸入你感興趣的內容:')
        self.url = self.url.format(name=self.target)
        #請求
        text = self.get()
        #寫入文件
        # self.write(text)

    def get(self):
        '''請求并返回網頁源代碼'''
        response = requests.get(self.url,self.headers)
        if response.status_code == 200:
            return response.text

    def write(self,text):
        with open('%s.html'%self.target,'w',encoding='utf-8') as f:
            f.write(text)

if __name__ == '__main__':
    spider = MySpider()
    spider.main()
# -*- coding:utf-8 -*-

#解析頁面文件

from lxml import etree

class Parse(object):
    def __init__(self):
        with open('python.html','r',encoding='utf-8') as f:
            self.html = etree.HTML(f.read())

    def parse(self):
        #獲取標題
        h4_tags = self.html.xpath('//h4[contains(@class,"t")]//text()')
        h4_tags = [i.strip() for i in h4_tags]
        print(h4_tags)

if __name__ == '__main__':
    parser = Parse()
    parser.parse()

2.總結:

好的,今天的分享就到此為止了。這是最基礎的案例,主要目的是讓大家先熟悉下,如何使用requests和lxml寫一個爬蟲程序,其次就是讓大家熟悉下分析網站的思路。

關于Python如何爬取指定百度搜索的內容并提取網頁的標題內容問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图们市| 文安县| 昌图县| 长沙县| 汉阴县| 吉木乃县| 汝阳县| 禹州市| 桃江县| 杭锦旗| 五峰| 丽水市| 拉孜县| 休宁县| 盐亭县| 静乐县| 濮阳市| 芦山县| 类乌齐县| 常熟市| 绍兴市| 湖北省| 绵竹市| 凌云县| 合江县| 横峰县| 温州市| 凌海市| 呼和浩特市| 延川县| 怀集县| 文成县| 凤翔县| 密山市| 和硕县| 周口市| 漾濞| 封开县| 海原县| 浦北县| 依兰县|