我使用mechanize从yahoo搜索中获取顶级结果并从中获取数据,但yahoo只提供dirtyurls,这会在进一步处理时出错,有没有获得原始链接的解决方案
示例:对于结果stackoverflow.com,我得到以下标记
<a dirtyhref="http://r.search.yahoo.com/_ylt=A0SO8zEuKGZUteYAEHRXNyoA;_ylu=X3oDMTEzODh2cDk0BHNlYwNzcgRwb3MDMQRjb2xvA2dxMQR2dGlkA1ZJUDI0NF8x/RV=2/RE=1416009903/RO=10/RU=http%3a%2f%2fstackoverflow.com%2f/RK=0/RS=a.mWRIy6IMjJQysgixByd8053hE-" id="link-1" class="yschttl spt" href="http://r.search.yahoo.com/_ylt=A0SO8zEuKGZUteYAEHRXNyoA;_ylu=X3oDMTEzODh2cDk0BHNlYwNzcgRwb3MDMQRjb2xvA2dxMQR2dGlkA1ZJUDI0NF8x/RV=2/RE=1416009903/RO=10/RU=http%3a%2f%2fstackoverflow.com%2f/RK=0/RS=a.mWRIy6IMjJQysgixByd8053hE-" target="_blank" data-bk="5054.1"> <b>Stack Overflow</b> - Official Site </a>
假设您可以轻松地隔离
dirtyhref
的内容(您可以使用BeautifulSoup
来解析链接http://www.crummy.com/software/BeautifulSoup/bs4/doc/),那么您可以使用urlparse
包仅获取路径(https://docs.python.org/2/library/urlparse.html#urlparse.urlparse)。现在,您可以将其放入一个字符串中,如下所示:现在,在我看来,字段由
/
分隔,因此您可以:假设您感兴趣的领域始终是第六个:
最后,您可以从
urllib2
包(https://docs.python.org/2/library/urllib.html#urllib.unquote)中使用unquote
:您也不能通过在
fields
上循环并检查它是否以RU=
开头来假定URL总是在第六个字段中相关问题 更多 >
编程相关推荐