尝试使用Mechanize和python匹配网站上的正则表达式

时间:2015-09-04 19:54:59

标签: python regex web-scraping mechanize-python

我正在尝试最终从我从维基百科上搜集的数据填充谷歌表。 (我稍后会处理robots.txt文件,我只是想弄清楚如何在概念上做到这一点。我的代码如下。我正在尝试将页面作为字符串放入,然后运行regexp搜索我的目标是隔离页面上的规范,并至少将它们存储为值,但我遇到问题,搜索页面不断出现,因为没有找到

温柔我是个菜鸟 - 提前感谢您的帮助!

function singleBookmarksView()
{
        $web_url = $this->uri->segment(2);

        $url_split_Array = explode('-', $web_url);

        $web_id = $url_split_Array['0'];

        $data['singleBookmark'] = $this->bookmark_model->getSingleBookmark($web_id);
        $data['bookmarkLabels'] = $this->getBookmarkLabel();
        $this->load->view("header_view.php");
        $this->load->view("bookmark_view.php", $data);
        $this->load->view("footer_view.php");

}

//create a new route for this
function singleBookmarksViewPopup()
{
        $web_url = $this->uri->segment(2);

        $url_split_Array = explode('-', $web_url);

        $web_id = $url_split_Array['0'];

        $data['singleBookmark'] = $this->bookmark_model->getSingleBookmark($web_id);
        $data['bookmarkLabels'] = $this->getBookmarkLabel();
        $this->load->view("bookmark_view.php", $data);

}

1 个答案:

答案 0 :(得分:0)

我得到的页面很好 - 你收到一条消息说无法找到页面的原因是因为你的print 'did not find'块没有正确缩进。这在Python中很重要!把它撞到4个空格:

if match:                      
    print 'found', match.group() 
else:
    print 'did not find'

还有一件事。我对Mechanize并不熟悉,但你只是在页面上调用read(),这会耗尽它。因此,当您在read()print page.read()页面时,没有任何内容可供使用并分配给pageAsaString。您已阅读到页面末尾!因此,您需要先阅读页面并将其保存到变量中。查看IO操作的文档here

修复缩进并删除print page.read()后,一切似乎都正常。

由于您刚开始,我强烈建议您阅读Dive Into Python。祝你的项目好运!