Heim >Backend-Entwicklung >Python-Tutorial >Einführung in die Installations- und Verwendungsanleitung des Python-Crawler-Hilfstools PyQuery-Modul

Einführung in die Installations- und Verwendungsanleitung des Python-Crawler-Hilfstools PyQuery-Modul

高洛峰
高洛峰Original
2017-03-04 16:04:001794Durchsuche

In diesem Artikel wird hauptsächlich die Installations- und Verwendungsanleitung des Python-Crawler-Hilfstools PyQuery vorgestellt, das problemlos zum Parsen von HTML-Inhalten verwendet werden kann, was es zu einem Favoriten für viele Crawler-Programmentwickler macht, die darauf verweisen können

Installation unter Windows:
Download-Adresse: https://pypi.python.org/pypi/pyquery/#downloads

Download Nach der Installation:


C:\Python27>easy_install E:\python\pyquery-1.2.4.zip


Sie können die Installation auch direkt online durchführen:


C:\Python27>easy_install pyquery


pyquery ist eine Python-Bibliothek ähnlich wie jquery. Sie können eine Syntax wie jquery verwenden, um alle Daten auf der Webseite zu extrahieren Auf HTML-Webseiten handelt es sich immer noch um eine sehr gute Bibliothek von Drittanbietern. Werfen wir einen Blick auf die Verwendungsmöglichkeiten von Pyquery.

Informationen aus HTML-String extrahieren


#!/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>
&#39;&#39;&#39;
d=pq(html)
 
print d(&#39;title&#39;) # 相当于css选择器,根据html标签获取元素
print d(&#39;title&#39;).text() # text()方法获取当前选中的文本块
 
print d(&#39;#hi&#39;).text() # 相当于id选择器,直接根据id名获取元素
print d(&#39;p&#39;).filter(&#39;#hi2&#39;).text() # 可以根据id或class得到指定元素
print d(&#39;.class1&#39;) # 相当于class选择器
print d(&#39;.class1&#39;).html() # html()方法获取当前选中的html块
print d(&#39;.class1&#39;).find(&#39;img&#39;).attr(&#39;src&#39;) # 查找嵌套元素,并选中属性
print d(&#39;ul&#39;).find(&#39;li&#39;).eq(0).text() # 根据索引号获取多个相同html元素中的某一个
print d(&#39;ul&#39;).children() # 获取所有子元素
print d(&#39;ul&#39;).children().eq(0) #根据索引获取子元素
print d(&#39;img&#39;).parents() # 获取父元素
print d(&#39;#hi&#39;).next() # 获取下一个元素
print d(&#39;#hi&#39;).nextAll() #获取后面全部元素块
print d(&#39;p&#39;).not_(&#39;#hi2&#39;) # 返回不匹配选择器的元素
# 遍历所有匹配的元素
for i in d.items(&#39;li&#39;):
 print i.text()
print [i.text() for i in d.items(&#39;li&#39;)] # 遍历用于列表推倒
print d.make_links_absolute(base_url=&#39;http://www.baidu.com&#39;) # 把html文档中的相对路径变为绝对路径


Der obige Codeausschnitt wird häufig verwendet Die Funktionsweise von Pyquery wird erläutert. Wir haben zunächst einen Teil des HTML-Codes definiert und dann eine Reihe von Pyquery-Methoden verwendet, um den HTML-Code zu bearbeiten, hauptsächlich um bestimmte Elemente und Text abzurufen. Natürlich kann Pyquery nicht nur Elemente abrufen, sondern auch Elementattribute festlegen, Elemente hinzufügen und andere Funktionen verwenden. Da die im obigen Code am häufigsten verwendete Methode ist, werden andere Methoden hier nicht vorgestellt.

Informationen aus URL oder lokaler HTML-Datei extrahieren

Natürlich kann Pyquery nicht nur HTML-Strings wie oben analysieren, sondern auch so:

d = pq(url=&#39;http://www.baidu.com/&#39;)

Wir können eine URL direkt laden, es gibt keinen Unterschied zur oben genannten Operationsmethode. Diese Methode verwendet standardmäßig das urllib-Modul, um http-Anfragen zu stellen. Wenn jedoch Anfragen in Ihrem System installiert sind, werden Anfragen verwendet, um http-Anfragen zu stellen, was bedeutet, dass Sie beliebige Parameter von Anfragen verwenden können, wie zum Beispiel:

pq(&#39;http://www.baidu.com/&#39;, headers={&#39;user-agent&#39;: &#39;pyquery&#39;})

Oder, wenn Sie bereits über die entsprechende HTML-Datei in Ihrem lokalen Bereich verfügen, können Sie auch Folgendes tun:

d = pq(filename=path_to_html_file)

Die obige Schreibmethode gibt direkt die lokale HTML-Datei und die Operationsmethode an das gleiche wie oben.
Wie Sie sehen können, bietet uns Pyquery genau wie JQuery die volle Bequemlichkeit, jedes Element auszuwählen.

Verwenden Sie Pyquery, um die 250 besten Douban-Filme zu finden

Nachdem wir die Syntax von Pyquery gelesen haben, schauen wir uns ein Beispiel an, um die 250 besten Douban-Filme zu finden.
Da der Anti-Crawler von Douban sehr leistungsfähig ist, konnte ich ihn nach mehrmaligem Ausführen nicht abfangen. Ich musste zuerst Anfragen verwenden, um die Seite herunterzuladen, und dann direkt Pyquery verwenden, um die Seite zu analysieren und Informationen zu extrahieren:

from pyquery import PyQuery as pq
import requests
 
head_req = {
 &#39;User-Agent&#39;:&#39;Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36&#39;,
 &#39;Referer&#39;:&#39;https://movie.douban.com/top250?start=0&#39;,
 
}
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(&#39;ol&#39;).find(&#39;li&#39;).html()
for data in d(&#39;ol&#39;).items(&#39;li&#39;):
 print data.find(&#39;.hd&#39;).find(&#39;.title&#39;).eq(0).text()
 print data.find(&#39;.star&#39;).find(&#39;.rating_num&#39;).text()
 print data.find(&#39;.quote&#39;).find(&#39;.inq&#39;).text()
 print


Führen Sie es aus und sehen Sie sich das Ergebnis an:


肖申克的救赎
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
爱情哪怕只有一天。

Natürlich sind dies nur die 25 Artikel Auf der ersten Seite wissen wir bereits über Douban-Filme Bescheid. Die URL von top250 lautet

https://movie.douban.com/top250?start=0
Der Startparameter beginnt bei 0 und erhöht sich jedes Mal um 25, bis

https: //movie.douban.com/top250?start=225
Sie können also eine Schleife schreiben, um sie alle zu erfassen.

Weitere Installations- und Nutzungsanleitungen für das Python-Crawler-Hilfstool PyQuery-Modul finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn