下载网页并使用python搜索文本

时间:2015-01-26 14:58:32

标签: python search text web

我正在尝试从网站上抓取特定文字。因为我是Python的新手,我发现很难用单个脚本来删除文本,所以我首先使用了这段代码:

import urllib
import requests
from bs4 import BeautifulSoup
htmltext = urllib.urlopen("https://io.winmasters.com/Feeds/api/event /282576?lang=el").read()

data = htmltext
soup =  BeautifulSoup(data)
f = open('/Desktop/text.txt', 'w')
f.write(data)
f.close()`

接下来我正在尝试编写一个用于搜索文本和打印特定单词的脚本。

with open("/Desktop/text.txt") as openfile:
    for line in openfile:
        for part in line.split():
            if "odds=" in part:
                print part

但搜索脚本不会返回我正在搜索的文本。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如果您只想要与odds键关联的值,而没有任何上下文,则可以执行以下操作:

import urllib
from json import loads # JSON parser

jsontext = urllib.urlopen("https://io.winmasters.com/Feeds/api/event/282576?lang=el").read()
data = loads(jsontext) # Parse the JSON

odds = [[b['odds'] for b in a['children']] for a in data['children']]

嵌套列表理解利用了数据的结构。使用数据结构的一个优点是,您可以毫不费力地进行非常丰富的分析。如果你想要除了赔率之外的其他信息,那么这可能更好地实现为嵌套的for - 循环。

答案 1 :(得分:0)

怎么样:

import sys
from bs4 import Beautiful Soup
import mechanize

def viewPage(url):
    browser=mechanize.Browser()
    browser.set_handle_robots(False)
    browser.addheaders=[('user-agent','MozillaMozilla/5.0')]
    page=browser.open(url)
    source_code=page.read()
    soup=BeautifulSoup(source_code)
    info=soup.findAll("insert what you want to locate")
    print(info)
viewPage("www.xkcd.com")

我有一个程序,当你选择一个网页时,它会读取所有链接,随机选择一个并转到它,做同样的事情。它基本上爬过了互联网。上面的代码是经过修改的摘录。