[英]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.