Maison  >  Questions et réponses  >  le corps du texte

python - 我写的Xpath 为什么爬取不到内容

-- 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()

阿神阿神2741 Il y a quelques jours767

répondre à tous(1)je répondrai

  • 天蓬老师

    天蓬老师2017-04-18 10:32:15

    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 !

    répondre
    0
  • Annulerrépondre