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

下载网页并使用python搜索文本,python,search,text,web,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

我正试图从网站上抓取特定的文本。因为我是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

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

如果您只是想要与赔率键关联的值,而不需要任何上下文,您可以简单地执行以下操作:

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循环。

如何:

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")

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

您试图打开的url中有一个空格。应该是脚本返回给你什么以及你在搜索什么?很好。此外,URL似乎返回JSON,这非常方便,并且可以使用加载使用Python JSON库轻松解析。赔率是JSON中的一个关键因素,因此查找所有值将非常简单。是否有任何理由在那里有导入请求,然后使用urllib.urlopen-似乎浪费了一个保持简单的机会。thanx寻求帮助。我只是将json导入加载替换为import simplejson,因为我收到了一些错误。在最后一行中,如何插入另一个过滤器?来自孩子的E.X,姓名,ODDSIF代码解决了你的问题,请考虑接受我的答案。如果您想要一些额外的信息,如果它与赔率数据(如MaxStack、name、bookmakerId)处于同一级别,那么只需将这些键添加到列表理解中:赔率=[[b[[b['name'],b['MaxStack'],b['Lobbs']],对于a['children']],对于a['children']],对于a['children']]。花时间理解JSON数据结构是非常值得的,因为一旦解析了它,所有数据都可以访问。