真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python中怎么定位元素

本篇文章為大家展示了Python中怎么定位元素,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供白云網(wǎng)站建設(shè)、白云做網(wǎng)站、白云網(wǎng)站設(shè)計(jì)、白云網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、白云企業(yè)網(wǎng)站模板建站服務(wù),10多年白云做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

確定網(wǎng)站沒(méi)有設(shè)置反爬措施,是否能直接返回待解析的內(nèi)容:

import requests  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text print(response)

Python中怎么定位元素

仔細(xì)檢查后發(fā)現(xiàn)需要的數(shù)據(jù)都在返回內(nèi)容中,說(shuō)明不需要特別考慮反爬舉措

審查網(wǎng)頁(yè)元素后可以發(fā)現(xiàn),書(shū)目信息都包含在 li 中,從屬于 class 為 bang_list clearfix bang_list_mode 的 ul  中

Python中怎么定位元素

進(jìn)一步審查也可以發(fā)現(xiàn)書(shū)名在的相應(yīng)位置,這是多種解析方法的重要基礎(chǔ)

Python中怎么定位元素

1. 傳統(tǒng) BeautifulSoup 操作

經(jīng)典的 BeautifulSoup 方法借助 from bs4 import  BeautifulSoup,然后通過(guò) soup = BeautifulSoup(html, "lxml") 將文本轉(zhuǎn)換為特定規(guī)范的結(jié)構(gòu),利用 find  系列方法進(jìn)行解析,代碼如下:

import requests from bs4 import BeautifulSoup  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text  def bs_for_parse(response):     soup = BeautifulSoup(response, "lxml")     li_list = soup.find('ul', class_='bang_list clearfix bang_list_mode').find_all('li') # 鎖定ul后獲取20個(gè)li     for li in li_list:         title = li.find('div', class_='name').find('a')['title'] # 逐個(gè)解析獲取書(shū)名         print(title)  if __name__ == '__main__':     bs_for_parse(response)

Python中怎么定位元素

成功獲取了 20 個(gè)書(shū)名,有些書(shū)面顯得冗長(zhǎng)可以通過(guò)正則或者其他字符串方法處理,本文不作詳細(xì)介紹

2. 基于 BeautifulSoup 的 CSS 選擇器

這種方法實(shí)際上就是 PyQuery 中 CSS 選擇器在其他模塊的遷移使用,用法是類(lèi)似的。關(guān)于  CSS 選擇器詳細(xì)語(yǔ)法可以參考:http://www.w3school.com.cn/cssref/css_selectors.asp由于是基于  BeautifulSoup 所以導(dǎo)入的模塊以及文本結(jié)構(gòu)轉(zhuǎn)換都是一致的:

import requests from bs4 import BeautifulSoup  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text          def css_for_parse(response):     soup = BeautifulSoup(response, "lxml")      print(soup)  if __name__ == '__main__':     css_for_parse(response)

然后就是通過(guò) soup.select 輔以特定的 CSS 語(yǔ)法獲取特定內(nèi)容,基礎(chǔ)依舊是對(duì)元素的認(rèn)真審查分析:

import requests from bs4 import BeautifulSoup from lxml import html  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text          def css_for_parse(response):     soup = BeautifulSoup(response, "lxml")     li_list = soup.select('ul.bang_list.clearfix.bang_list_mode > li')     for li in li_list:         title = li.select('div.name > a')[0]['title']         print(title)  if __name__ == '__main__':     css_for_parse(response)

3. XPath

XPath 即為 XML 路徑語(yǔ)言,它是一種用來(lái)確定 XML 文檔中某部分位置的計(jì)算機(jī)語(yǔ)言,如果使用 Chrome 瀏覽器建議安裝  XPath Helper 插件,會(huì)大大提高寫(xiě) XPath 的效率。

之前的爬蟲(chóng)文章基本都是基于 XPath,大家相對(duì)比較熟悉因此代碼直接給出:

import requests from lxml import html  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text  def xpath_for_parse(response):     selector = html.fromstring(response)     books = selector.xpath("http://ul[@class='bang_list clearfix bang_list_mode']/li")     for book in books:         title = book.xpath('div[@class="name"]/a/@title')[0]         print(title)  if __name__ == '__main__':     xpath_for_parse(response)

4. 正則表達(dá)式如果對(duì) HTML  語(yǔ)言不熟悉,那么之前的幾種解析方法都會(huì)比較吃力。這里也提供一種萬(wàn)能解析大法:正則表達(dá)式,只需要關(guān)注文本本身有什么特殊構(gòu)造文法,即可用特定規(guī)則獲取相應(yīng)內(nèi)容。依賴(lài)的模塊是  re

首先重新觀察直接返回的內(nèi)容中,需要的文字前后有什么特殊:

import requests import re  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text print(response)

Python中怎么定位元素

Python中怎么定位元素

觀察幾個(gè)數(shù)目相信就有答案了:

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部