[英]Python scraping pdf from URL
我想從URL“ http://www.nycgo.com/venues/thalia-restaurant#menu ”中抓取文本,我感興趣的文本位於頁面的“菜單”選項卡中。 我嘗試了BeautifulSoup來獲取頁面上的所有文本,但是以下代碼的返回值缺少菜單中的所有文本。
html = urllib2.urlopen("http://www.nycgo.com/venues/thalia-restaurant#menu")
html=html.read()
soup = BS(html)
print soup.get_text()
當我檢查菜單內容中的元素時,菜單的內容似乎是頁面上html的一部分。 我確實注意到,當實際瀏覽頁面時,菜單完全加載需要幾秒鍾。 不知道這是否就是上面的代碼無法獲取菜單內容的原因。
任何見識將不勝感激。
盡管soup.get_text()
將返回HTML文檔(網頁)中的所有文本,但這里的問題是菜單以PDF格式嵌入頁面中,Beautiful soup無法訪問。 實際的PDF文件是用Javascript定義的,如下所示:
{
name: "menu",
show: Boolean(1),
url: "/assets/files/programs/rw/2016W/thalia-restaurant.pdf"
}
提取此內容的最簡單方法可能是使用正則表達式。 雖然這通常是一個壞主意 ,但您在這里要查找的是非常具體的東西-文件,文件中以“ .quots”結尾的“引號”包裝。 以下代碼將找到並提取URL:
import re
from urllib import urlopen
html = urlopen("http://www.nycgo.com/venues/thalia-restaurant#menu")
html_doc = html.read()
match = re.search(b'\"(.*?\.pdf)\"', html_doc)
pdf_url = "http://www.nycgo.com" + match.group(1).decode('utf8')
現在pdf_url
為:
u'http://www.nycgo.com/assets/files/programs/rw/2016W/thalia-restaurant.pdf'
但是,從PDF中提取文本比較麻煩。 您可以先下載文件:
from urllib import urlretrieve
urlretrieve(pdf_url, "download.pdf")
text = convert_pdf_to_txt("download.pdf")
print(text)
返回值:
NEW YOUR CITY
RESTAURANT WEEK
WINTER 2016
MONDAY - FRIDAY
828 Eighth Avenue
New York City, 10019
Tel: 212.399.4444
www.restaurantthalia.com
LUNCH $25
FIRST COURSE
CREAMY POLENTA
fricassee of truffle mushrooms
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.