この記事では、Python クローラー補助ツールである PyQuery モジュールのインストールと使用ガイドを主に紹介します。PyQuery は、HTML コンテンツの解析に簡単に使用できるため、必要とする友人が参照できます
。 Windows インストール先:
ダウンロード アドレス: https://pypi.python.org/pypi/pyquery/#downloads
ダウンロード後にインストール:
C:\Python27>easy_install E:\python\pyquery-1.2.4.zip
直接インストールすることもできますオンライン:
C:\Python27>easy_install pyquery
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文档中的相对路径变为绝对路径
URL またはローカル HTML ファイルから情報を抽出します
もちろん、pyquery は上記のような HTML 文字列を解析できるだけでなく、次のようにすることもできます:d = pq(url='http://www.baidu.com/')URL を直接ロードすることもできますが、これは URL と同じではありません。上記の操作方法に違いはありません。このメソッドは、デフォルトで urllib モジュールを使用して http リクエストを作成しますが、リクエストがシステムにインストールされている場合、リクエストは http リクエストの作成に使用されます。つまり、次のようなリクエストのパラメータを使用できます。
pq('http://www.baidu.com/', headers={'user-agent': 'pyquery'})または、対応する HTML ファイルが既にローカル領域にある場合は、次のこともできます:
d = pq(filename=path_to_html_file)上記の記述方法はローカル HTML ファイルを直接指定しており、操作方法は上記と同じです。
ご覧のとおり、pyquery は、jquery と同様に、任意の要素を選択するための完全な利便性を提供します。
pyquery を使用して上位 250 の Douban ムービーをキャプチャする
pyquery の構文を読んだ後、上位 250 の Douban ムービーをキャプチャする例を見てみましょう。Douban のアンチクローラーは非常に強力なので、数回実行してもキャッチできませんでした。最初にリクエストを使用してページをダウンロードし、pyquery を直接使用してページを分析して情報を抽出する必要がありました。
実行して結果を確認します:
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
もちろん、これは最初のページの 25 項目だけです。トップ 250 の Douban ムービーの URL は
https://movie. douban.com/top250?start=0
パラメータを 0 から開始し、
https://movie.douban.com/top250?start=225
まで毎回 25 を追加します。したがって、すべてをキャッチするループを作成できます。
Python クローラー補助ツール PyQuery モジュールのインストールと使用ガイドの詳細については、PHP 中国語 Web サイトの関連記事に注目してください。