python - 我写的Xpath 为什么爬取不到内容
阿神
阿神 2017-04-18 10:30:15
0
1
814

-- coding:utf-8 --

import lxml,requests,sys
from bs4 import BeautifulSoup
from lxml import etree

reload(sys)
sys.setdefaultencoding("utf-8")

def main():

url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%E6%9A%B4%E8%B5%B0%E6%BC%AB%E7%94%BB&pn=0'

req = requests.get(url).content

# soup = BeautifulSoup(req.content,'lxml')
# imgs = soup.find_all('img')

content = etree.HTML(req)
paths = content.xpath('//*[@id="imgid"]/ul/li[1]/a/img/text()')
# for img in imgs:
#
#     print img

# for img in imgs :

print paths

main()

阿神
阿神

闭关修行中......

répondre à tous(1)
Peter_Zhu

Lors de l'écriture d'un robot, vous devez utiliser XPath pour confirmer s'il y a des données dans le code source de la page Web. Sinon, cela signifie qu'il est chargé de manière asynchrone

.

1. Entrez ce lien dans le navigateur pour afficher le code source, ctrl+f pour trouver l'emplacement de imgid

view-source:https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%E6%9A%B4%E8%B5%B0%E6%BC%AB%E7%94%BB&pn=0

2. Découvrez

La liste d'images suivante n'a pas été trouvée. Nous pouvons déterminer que l'image est chargée par js

3. Rechercher

F12 a regardé le réseau (actualiser pour voir) et n'a pas trouvé les informations d'image chargées par la requête asynchrone, j'ai donc deviné que les données devraient être au format html, mais elles ont été placées dans js et traitées lors du chargement du image

De la même manière pour afficher le code source ci-dessus, recherchez le paramètre objURL et trouvez la véritable URL

//很多,集中在html下半部分
http://img3.duitang.com/uploads/item/201608/06/20160806110540_MAcru.jpeg

Solution

Le reste dépend de vous ~ Trouvez un moyen d'analyser la véritable URL dans la partie suivante !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal