2017-04-21 12 views
0

BeautifulSoupを使用してウェブページから特定のリンクを抽出できません。具体的なウェブページはhttp://punchdrink.com/recipe-archives/?filter-spirit__term=GinPythonで美しいスープを使用して特定のリンクを見つけることができません

です。私がソースコードを調べると、具体的にレシピへのリンク(例:http://punchdrink.com/recipes/breakfast-martini/)が表示されますが、BeautifulSoupを使用するとこれらのリンクは表示されませんHTMLの中にはまったくありません。

ここでHTMLをつかむために私のコードです:

def drinkScraper(url, searchTerm): 
    res = requests.get(url) 
    res.raise_for_status() 
    soup = bs4.BeautifulSoup(res.text) 

印刷スープは、そのページ上のレシピへのリンクのいずれかを参照せずにHTMLを提供します。

私は自分のアーカイブ内のすべてのレシピへのリンクについてこのウェブサイトをスクラップしようとしていますが、これを理解できないようです。

ありがとうございました。

+0

それは動的なサイトですので、あなたがURLを取得するためにAjaxリクエストを調べています。 – amigcamel

+0

@amigcamelありがとうございます!私はリンクを見つけるためにセレンを使用して終了しました。私は将来あなたの提案をもっと見ていきます。 –

答えて

0

seleniumを使用することができますが、XHRリクエストに従い、requestsでエミュレートすることで、よく習得できます。 FirebugまたはChromeデベロッパーツールを開くときに用語を検索する際に気付いたら、APIをリクエストして(XHR経由で)json形式で結果を返します。単純にパラメータを要求し、結果を解析することができます。 jsonRequestDataあなたは検索用語とheadersを送信したいヘッダで変更することができ、データform post data、ある

from bs4 import BeautifulSoup 
import requests 

jsonRequestData = '{"requests":[{"indexName":"wp_posts_recipe","params":"query=&hitsPerPage=1000&maxValuesPerFacet=100&page=0&distinct=false&facetingAfterDistinct=true&filters=record_index%3D0&facets=%5B%22spirit%22%2C%22style%22%2C%22season%22%2C%22flavor_profile%22%2C%22family%22%5D&tagFilters=&facetFilters=%5B%22spirit%3AGin%22%5D"}]}' 
headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'application/json'} 

response = requests.post('http://h0iee3ergc-2.algolianet.com/1/indexes/*/queries?x-algolia-agent=Algolia%20for%20vanilla%20JavaScript%20(lite)%203.21.1%3Binstantsearch.js%201.11.6%3BJS%20Helper%202.19.0&x-algolia-application-id=H0IEE3ERGC&x-algolia-api-key=9a128c4989675ec375c59a2de9ef3fc1', headers=headers, data=jsonRequestData) 

for hit in response.json()["results"][0]["hits"]: 
    print ("%s (%s)" % (hit["post_title"], hit["permalink"])) 

:このように

それはよ出力:

State Street Bloody Mary (http://punchdrink.com/recipes/state-street-bloody-mary/) 
I'm Ya Huckleberry (http://punchdrink.com/recipes/im-ya-huckleberry/) 
Girl From Cadiz (http://punchdrink.com/recipes/girl-from-cadiz/) 
Breakfast Martini (http://punchdrink.com/recipes/breakfast-martini/) 
Juniperotivo (http://punchdrink.com/recipes/juniperotivo/) 
.... 
関連する問題