我正在尝试从网站上抓取特定文字。因为我是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
但搜索脚本不会返回我正在搜索的文本。有什么建议吗?
答案 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")
我有一个程序,当你选择一个网页时,它会读取所有链接,随机选择一个并转到它,做同样的事情。它基本上爬过了互联网。上面的代码是经过修改的摘录。