Python爬蟲Xpath定位數(shù)據(jù)的兩種方法
方法一:直接右鍵,將文章路徑復(fù)制下來(lái)點(diǎn)擊Copy full Xpath
使用selenium+lxml中的etree進(jìn)行配合使用,使用etree解析html網(wǎng)頁(yè)
import requests
from lxml import etree
import time
import socket
import csv
from selenium import webdriver
from configparser import ConfigParser
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
#禁止圖片和css加載
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 如果想加載圖片,就把下面第二句話改第一句話,刪掉上面的“禁止圖片和css加載”部分
# wb = Chrome(options=option)
wb=webdriver.Chrome(options=chrome_options)
#最大化窗口、輸入網(wǎng)址、等待至網(wǎng)頁(yè)加載完成(防止元素還沒加載出來(lái)就開始爬了這樣自然爬不到數(shù)據(jù)。如果一直加載不出就等10秒,加載好了就立刻結(jié)束等待)
wb.maximize_window()
wb.get("https://www.tianyancha.com/")
wb.implicitly_wait(5)然后獲取網(wǎng)頁(yè)數(shù)據(jù),這里表明哪怕后面出錯(cuò)了,仍然可以延續(xù)wb的位置繼續(xù)控制瀏覽器
data = wb.page_source
time.sleep(3)
data = wb.page_source
time.sleep(3)
page_all.append(data)
html = etree.HTML(data)
company = html.xpath('/html/body/div/div/div[2]/div/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/h1/text()')
print(company )
方法二:使用@制定標(biāo)簽屬性,搜索指定位置
這樣的好處就是,對(duì)于批量處理的網(wǎng)頁(yè),有的標(biāo)簽位置不在同一個(gè)地方,那么我們就是不使用全Xpath路徑,而使用相對(duì)路徑,用@制定某種屬性的標(biāo)簽,下載相關(guān)數(shù)據(jù)
"http://div[@class='mainArea']/ul/li"
使用//div[@class=‘mainArea’]的意思是:從根部(//)查找 class值為 mainArea的Node.
所以,那么就很簡(jiǎn)單了 //某元素[@class=‘CLASS值’]
大家可以按照這個(gè)公式來(lái)查找 class的元素了。
剩下的 /ul/li 表示的是,繼續(xù)查找 class='mainArea’的div包括的ul元素下面的li 節(jié)點(diǎn)集合。
到此這篇關(guān)于Python爬蟲Xpath定位數(shù)據(jù)的方法的文章就介紹到這了,更多相關(guān)Python爬蟲Xpath定位數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
構(gòu)建可視化?web的?Python?神器streamlit
這篇文章主要介紹了構(gòu)建可視化web的Python神器streamlit,Streamlit是一個(gè)用于機(jī)器學(xué)習(xí)、數(shù)據(jù)可視化的Python框架,它能幾行代碼就構(gòu)建出一個(gè)精美的在線app應(yīng)用2022-06-06
python實(shí)現(xiàn)ftp文件傳輸系統(tǒng)(案例分析)
最近做了一個(gè)簡(jiǎn)單的文件傳輸系統(tǒng),基于ftp協(xié)議,使用python語(yǔ)言開發(fā),雖然python里面已經(jīng)有ftplib模塊,可以很容易的實(shí)現(xiàn)ftp服務(wù)器,這篇文章主要介紹了python實(shí)現(xiàn)ftp文件傳輸系統(tǒng)的案例分析,需要的朋友可以參考下2020-03-03
pandas創(chuàng)建新Dataframe并添加多行的實(shí)例
下面小編就為大家分享一篇pandas創(chuàng)建新Dataframe并添加多行的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Pytorch深度學(xué)習(xí)之實(shí)現(xiàn)病蟲害圖像分類
PyTorch是一個(gè)開源的Python機(jī)器學(xué)習(xí)庫(kù),基于Torch,用于自然語(yǔ)言處理等應(yīng)用程序。它具有強(qiáng)大的GPU加速的張量計(jì)算和自動(dòng)求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)。本文將介紹如何通過(guò)PyTorch實(shí)現(xiàn)病蟲害圖像分類,感興趣的可以學(xué)習(xí)一下2021-12-12
Python基于域相關(guān)實(shí)現(xiàn)圖像增強(qiáng)的方法教程
當(dāng)在圖像上訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型時(shí),通過(guò)對(duì)由數(shù)據(jù)增強(qiáng)生成的更多圖像進(jìn)行訓(xùn)練,可以使模型更好地泛化。本文將為大家介紹Python基于域相關(guān)的圖像增強(qiáng)實(shí)現(xiàn)方法,需要的可以了解一下2022-01-01
Python運(yùn)行報(bào)錯(cuò)UnicodeDecodeError的解決方法
本文給大家分享的是在Python項(xiàng)目中經(jīng)常遇到的關(guān)于編碼問(wèn)題的一個(gè)小bug的解決方法以及分析方法,有相同遭遇的小伙伴可以來(lái)參考下2016-06-06
Python利用sched模塊實(shí)現(xiàn)定時(shí)任務(wù)
今天我們來(lái)介紹一下Python當(dāng)中的定時(shí)任務(wù),主要用到的模塊是sched,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04
Python基于鏈接表實(shí)現(xiàn)無(wú)向圖最短路徑搜索
鏈接表的存儲(chǔ)相比較鄰接炬陣,使用起來(lái)更方便,對(duì)于空間的使用是剛好夠用原則,不會(huì)產(chǎn)生太多空間浪費(fèi)。所以本文將以鏈接表方式實(shí)現(xiàn)無(wú)向圖最短路徑搜索,需要的可以參考一下2022-04-04
4種非常實(shí)用的python內(nèi)置數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了4種非常實(shí)用的python內(nèi)置數(shù)據(jù)結(jié)構(gòu),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04

