Maison >développement back-end >Tutoriel Python >Introduction à l'installation et à l'utilisation du module PyQuery, un outil auxiliaire du robot Python
Cet article présente principalement le guide d'installation et d'utilisation du module PyQuery, un outil auxiliaire de robot d'exploration Python. PyQuery peut être facilement utilisé pour analyser le contenu HTML, ce qui en fait un favori de nombreux développeurs de programmes d'exploration. Les amis dans le besoin peuvent s'y référer.
Installation sous Windows :
Adresse de téléchargement : https://pypi.python.org/pypi/pyquery/#downloads
Télécharger Post-installation :
C:\Python27>easy_install E:\python\pyquery-1.2.4.zip
Vous pouvez également installer directement en ligne :
C:\Python27>easy_install pyquery
pyquery est une bibliothèque Python similaire à jquery. Vous pouvez utiliser une syntaxe comme jquery pour extraire toutes les données de la page Web. les données sur les pages Web HTML. L'extraction et l'exploitation minière sont toujours une très bonne bibliothèque tierce. Jetons un coup d'œil aux utilisations de pyquery.
Extraire les informations de la chaîne HTML
#!/usr/bin/python # -*- coding: utf-8 -*- from pyquery import PyQuery as pq html = ''' <html> <head> <title>this is title</title> </head> <body> <p id="hi">Hello, World</p> <p id="hi2">Nihao</p> <div class="class1"> <img src="1.jpg" /> </div> <ul> <li>list1</li> <li>list2</li> </ul> </body> </html> ''' d=pq(html) print d('title') # 相当于css选择器,根据html标签获取元素 print d('title').text() # text()方法获取当前选中的文本块 print d('#hi').text() # 相当于id选择器,直接根据id名获取元素 print d('p').filter('#hi2').text() # 可以根据id或class得到指定元素 print d('.class1') # 相当于class选择器 print d('.class1').html() # html()方法获取当前选中的html块 print d('.class1').find('img').attr('src') # 查找嵌套元素,并选中属性 print d('ul').find('li').eq(0).text() # 根据索引号获取多个相同html元素中的某一个 print d('ul').children() # 获取所有子元素 print d('ul').children().eq(0) #根据索引获取子元素 print d('img').parents() # 获取父元素 print d('#hi').next() # 获取下一个元素 print d('#hi').nextAll() #获取后面全部元素块 print d('p').not_('#hi2') # 返回不匹配选择器的元素 # 遍历所有匹配的元素 for i in d.items('li'): print i.text() print [i.text() for i in d.items('li')] # 遍历用于列表推倒 print d.make_links_absolute(base_url='http://www.baidu.com') # 把html文档中的相对路径变为绝对路径
L'extrait de code ci-dessus Couramment utilisé les méthodes de fonctionnement de pyquery sont données. Nous avons d'abord défini un morceau de code HTML, puis utilisé une série de méthodes pyquery pour opérer sur le code HTML, principalement pour obtenir des éléments et du texte spécifiques. Bien sûr, pyquery peut non seulement obtenir des éléments, mais également définir les attributs des éléments, ajouter des éléments et d'autres fonctions. Puisque la méthode la plus couramment utilisée est la méthode utilisée dans le code ci-dessus, d'autres méthodes ne seront pas présentées ici.
Extraire des informations de l'URL ou d'un fichier HTML local
Bien sûr, pyquery peut non seulement analyser les chaînes html comme ci-dessus, mais aussi comme ceci :
d = pq(url='http://www.baidu.com/')
Nous pouvons charger une URL directement, il n'y a aucune différence avec la méthode de fonctionnement ci-dessus. Cette méthode utilise le module urllib pour effectuer des requêtes http par défaut, mais si les requêtes sont installées sur votre système, les requêtes seront utilisées pour effectuer des requêtes http, ce qui signifie que vous pouvez utiliser n'importe quel paramètre de requête, tel que :
pq('http://www.baidu.com/', headers={'user-agent': 'pyquery'})
Ou, si vous avez déjà le fichier html correspondant dans votre région, vous pouvez également le faire :
d = pq(filename=path_to_html_file)
La méthode d'écriture ci-dessus spécifie directement le fichier html local, et la méthode de fonctionnement reste la pareil que ci-dessus.
Comme vous pouvez le voir, pyquery nous offre toute la commodité nécessaire pour sélectionner n'importe quel élément, tout comme jquery.
Utilisez pyquery pour récupérer les 250 meilleurs films Douban
Après avoir lu la syntaxe de pyquery, regardons un exemple pour récupérer les 250 meilleurs films Douban.
Comme l'anti-crawler de Douban est très puissant, je n'ai pas pu l'attraper après l'avoir exécuté plusieurs fois. J'ai d'abord dû utiliser des requêtes pour télécharger la page, et utiliser directement pyquery pour analyser la page afin d'extraire des informations :
from pyquery import PyQuery as pq import requests head_req = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36', 'Referer':'https://movie.douban.com/top250?start=0', } r=requests.get("https://movie.douban.com/top250?start=0",headers=head_req) with open("1.html","wb") as html: html.write(r.content) d=pq(filename="1.html") # print d('ol').find('li').html() for data in d('ol').items('li'): print data.find('.hd').find('.title').eq(0).text() print data.find('.star').find('.rating_num').text() print data.find('.quote').find('.inq').text() print
肖申克的救赎 9.6 希望让人自由。 这个杀手不太冷 9.4 怪蜀黍和小萝莉不得不说的故事。 阿甘正传 9.4 一部美国近现代史。 霸王别姬 9.4 风华绝代。 美丽人生 9.5 最美的谎言。 千与千寻 9.2 最好的宫崎骏,最好的久石让。 辛德勒的名单 9.4 拯救一个人,就是拯救整个世界。 海上钢琴师 9.2 每个人都要走一条自己坚定了的路,就算是粉身碎骨。 机器人总动员 9.3 小瓦力,大人生。 盗梦空间 9.2 诺兰给了我们一场无法盗取的梦。 泰坦尼克号 9.1 失去的才是永恒的。 三傻大闹宝莱坞 9.1 英俊版憨豆,高情商版谢耳朵。 放牛班的春天 9.2 天籁一般的童声,是最接近上帝的存在。 忠犬八公的故事 9.2 永远都不能忘记你所爱的人。 龙猫 9.1 人人心中都有个龙猫,童年就永远不会消失。 大话西游之大圣娶亲 9.1 一生所爱。 教父 9.2 千万不要记恨你的对手,这样会让你失去理智。 乱世佳人 9.2 Tomorrow is another day. 天堂电影院 9.1 那些吻戏,那些青春,都在影院的黑暗里被泪水冲刷得无比清晰。 当幸福来敲门 8.9 平民励志片。 搏击俱乐部 9.0 邪恶与平庸蛰伏于同一个母体,在特定的时间互相对峙。 楚门的世界 9.0 如果再也不能见到你,祝你早安,午安,晚安。 触不可及 9.1 满满温情的高雅喜剧。 指环王3:王者无敌 9.1 史诗的终章。 罗马假日 8.9 爱情哪怕只有一天。Bien sûr, il ne s'agit que des 25 éléments présents la première page, on connaît déjà les films Douban L'URL du top250 est
Le paramètre de démarrage commence à 0 et augmente par 25 à chaque fois jusqu'à
Vous pouvez donc écrire une boucle pour tous les capturer.