使用urllib2循环访问页面内容

2024-09-27 00:18:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python比较陌生,所以这样的事情对我来说并不容易。在

我只想循环浏览一个网页内容,然后将每次出现的内容打印到控制台窗口,但显然我的循环出错了。在

import sys
import re
import urllib2
import urlparse

crawling = tocrawl.pop()
response = urllib2.urlopen(crawling)

msg = response.read()
endDiv = msg.find('</div>')
while endDiv != -1:
    endDiv = msg.find('</div>')
    startPos = msg.find('class="facultyname">', endDiv)
    if startPos != -1:
        nextPos = msg.find('.php">', startPos)
        endPos = msg.find('</a>', nextPos)
    if endPos != -1:
        name = msg[nextPos+6:endPos]
        print name, "   ",

    startPos = msg.find('function escramble()')
    if startPos != -1:
        nextPos = msg.find('b=', startPos)
        endPos = msg.find('c', nextPos)
    if endPos != -1:
        email = msg[nextPos+3:endPos-1]
        email = email[:-13] + '@email.com'
        print email

    endDiv = msg.find('</div>', endPos)

我已经抓取了第一次出现的,我只想循环到页面的末尾,然后收集其余的。在

HTML示例:

^{pr2}$

Tags: nameimportdivifemailresponsemsgfind
1条回答
网友
1楼 · 发布于 2024-09-27 00:18:37

适用于您的示例数据的快速而肮脏的方法:

>>> res = re.findall(r"b\+?='(.*?)'", html)
>>> res
['person1', '@', 'email.com', 'person2', '@', 'email.com']
>>> emails [''.join(group) for group in zip(*[iter(res)]*3)]
['person1@email.com', 'person2@email.com']

既然这已经很可怕了,那我们就好好想想吧:

^{pr2}$

注意-这只适用于您的示例数据-HTML是易变的-所以不要期望它是健壮的-易于管理等。。。等等……

相关问题 更多 >

    热门问题