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()
1. Entrez ce lien dans le navigateur pour afficher le code source, ctrl+f pour trouver l'emplacement de imgid
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
Solution
Le reste dépend de vous ~ Trouvez un moyen d'analyser la véritable URL dans la partie suivante !