从网站

时间:2015-11-11 02:14:58

标签: html python-2.7 selenium scrapy

好的,我只想知道我最好的行动计划是什么,以及我需要哪些工具/框架:

1。登录网页

2. 导航到所需的页面,需要点击按钮,然后填写要搜索的文本框

3-4 循环播放

3. 从页面抓取html并存储在本地txt文件中

4. 分析文本文件,如果字符串符合某些条件,请通过电子邮件通知我已找到匹配项

我的过程是使用scrapy来获取数据,但我不确定如何浏览页面并提供输入(例如登录凭据和按钮导航)这让我想要使用selenium(在工作中使用它,所以我'我觉得相当舒服)但我不确定这是不是最好的方法。

感谢任何指导!

2 个答案:

答案 0 :(得分:2)

很多时候,"点击按钮"和"填写表格"并不要求你真正做任何这些事情。它只是浏览器用来从您那里获取数据的方法,然后通过POST将其提交给服务器。您实际上可以直接执行这些POST请求。

使用Javascript,同样的事情正在发生,它只是在不重新加载页面的情况下提交POST,并使用新数据修改当前页面。

对于大多数情况,您只需确定POST的位置,以及需要填写的字段,然后自行完成。一些好的起点是Using FormRequest.from_response() to simulate a user login,而SO Scrapy/Ajax question

这将允许您简化并坚持使用Scrapy,而不是使用Selenium获取整个页面内容,并将数据传递到文件中的Scrapy,所有这些都显着更慢。

顺便说一句,如果您确实想要使用Selenium,并希望之后能够解析数据,请不要使用Scrapy。它是一个完整的框架,并且不适合解析HTML。相反,使用它的解析库,提到parsel eLRuLL,或使用BeautifulSoup4`(文档和主页是here

答案 1 :(得分:1)

确保Selenium是我认为这种情况的最佳选择之一。您也可以尝试使用scrapy复制登录请求,但是您需要知道使用scrapy进行正确爬网所需的请求,标题,cookie(因为scrapy不提供像Selenium这样的浏览器自动化)。

对于解析正文,当然scrapy是最佳选择,但您也可以使用parsel仅使用选择器。

要发送电子邮件,您应该配置一个smtp客户端,this article更好地解释它。