Python在一个网站的源代码中搜索并在找到一个单词时打印出该网站

2024-09-24 22:27:31 发布

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

我正在尝试创建一个python脚本(但是直到现在还没有结果)从一个url列表中返回源单词中包含的url,在我的例子中是两种类型的url,其中包含其中一些

"var dle_act_lang   = ["Yes", "No", "Enter", "Cancel", "Save"];"

其中一些人:

^{pr2}$

这两行是我要搜索的单词,不是分开的

有人能帮我创建这个脚本吗?我只想通过这两行代码对这些url进行排序!在


Tags: no脚本url类型列表langvarsave
2条回答
urls = ['http://yahoo.com', 'http://google.com', 'http://facebook.com', 'http://turnplay.com']
words = ['book', 'play']

matches = []

for url in urls:
   for word in words:
      if word in url:
         matches.append(url)

print matches  # <== ['http://facebook.com', 'http://turnplay.com']

首先,你有一堆网址,你想得到它们所指网页的来源:

urls = ['http://example.com/foo', 'http://example.com/bar']
pages = {url: urllib2.urlopen(url).read() for url in urls}

现在,您要找出其中哪一个包含dle_act_lang中的任何单词。一种方法是将所有内容转换为sets,然后使用set intersection:

^{pr2}$

就这样。在

然而,虽然这回答了你开始时提出的问题,但在问题结束时,你似乎在问一个完全不同的问题:“我只想通过这两个代码行对这些url进行排序!”我不知道你所说的“按这两行代码排序”是什么意思,但是不管你的意思是什么,在你要求的内容中,或者在这段代码中,没有排序。在


从稍后的编辑中,您可能正在搜索一行JavaScript代码,如下所示:

"var dle_act_lang   = ["Yes", "No", "Enter", "Cancel", "Save"];"

因此,不需要在此基础上创建wordset并执行wordset & pageset;只需将JS代码和页面保留为旧字符串,并使用in运算符:

urls = ['http://example.com/foo', 'http://example.com/bar']
pages = {url: urllib2.urlopen(url).read() for url in urls}
jscode = '''"var dle_act_lang   = ["Yes", "No", "Enter", "Cancel", "Save"];"'''
matching_urls = [url for url, pages in pages.iteritems() if jscode in page]

不过,如果你想把每行的代码都改成两行,而不是重复这些行

urls = ['http://example.com/foo', 'http://example.com/bar']
pages = {url: urllib2.urlopen(url).read() for url in urls}
pagesets = {url: set(line.strip() for line in page.split('\n')) 
            for url, page in pages.iteritems()}
jscodeset = {'''"var dle_act_lang   = ["Yes", "No", "Enter", "Cancel", "Save"];"''',
             '''"var dle_act_lang   = ["Да", "Нет", "Ввод", "Отмена", "Сохранить"];"''']}
matching_urls = [url for url, pageset in pagesets.iteritems() if wordset & pageset]

相关问题 更多 >