为了学习更高级的Python,我自己创建了一个导航到网站的python脚本(在本例中为imdb.com),输入一个单词(已经被声明为变量),然后输出出现在阵列中的前5个标题,然后输出到控制台。
我的问题是:这样的事情是否可能?是否有可以实现这一目标的库/框架?
如果可能的话,我会从哪里开始?网络抓取对我来说并不陌生,但是Python中的网络抓取是。我真正需要的是指导正确的道路。谷歌搜索的25分钟(几分钟)得出了一些模糊的答案,这些答案只会让我更加困惑。
答案 0 :(得分:2)
你绝对应该采用requests
方式。提出请求就像:
import requests
r = requests.get('https://github.com/timeline.json')
(摘自requests
' docs)
您只需找到所选网站的首选网址http://www.imdb.com/find
,然后在{'q': 'search_term'}
方法中添加参数(get
)即可。然后,您可以访问r.text
并使用HTML解析器解析结果(选中BeautifulSoup)。存储前5个结果并在控制台中显示它们应该是轻而易举的。
答案 1 :(得分:1)
有可能,您可以使用selenium来浏览网站: http://docs.seleniumhq.org/并找到可以使用XPath的正确元素。有很好的浏览器插件可以测试XPath。
答案 2 :(得分:0)
你可以使用第三方框架作品美丽的汤link并且它易于使用
Beautiful Soup是一个Python库,专为快速周转项目而设计,例如屏幕抓取。三个功能使它变得强大:
Beautiful Soup提供了一些简单的方法和Pythonic习语,用于导航,搜索和修改解析树:用于剖析文档和提取所需内容的工具包。编写应用程序并不需要太多代码 Beautiful Soup会自动将传入的文档转换为Unicode,将传出的文档转换为UTF-8。您不必考虑编码,除非文档没有指定编码,而Beautiful Soup无法检测编码。然后你只需要指定原始编码。 Beautiful Soup位于流行的Python解析器之上,如lxml和html5lib,允许您尝试不同的解析策略或交易速度以获得灵活性。
答案 3 :(得分:0)
我强烈反对建议使用python requests
的答案,这是一个轻量级的解决方案,可以帮助您实现目标。
您可以尝试以下内容:
import requests
r = requests.get(http://www.imdb.com/find?ref_=nv_sr_fn&q=liam&s=all)
return r.content
对于imdb,您可以更改网址中的q=
参数以返回结果。如果我想要X-Men而不是Liam,我可以保留相同的网址,只需将q=liam
替换为q=xmen
。
为了便于解析,请查看BeautifulSoup。如果这不是你的风格,并且你想要进行一些正则表达式练习,请尝试使用python正则表达式来提取你想要的数据。