首先,你有一堆網址,然後你想他們是指在網頁源:
urls = ['http://example.com/foo', 'http://example.com/bar']
pages = {url: urllib2.urlopen(url).read() for url in urls}
現在,你要找出他們的包含dle_act_lang
任何單詞。要做到這一點的方法之一是一切都轉化爲set
S和只使用交集:
pagesets = {url: set(page.split()) for url, page in pages.iteritems()}
wordset = set(dle_act_lang)
matching_urls = [url for url, pageset in pagesets.iteritems() if wordset & pageset]
就是這樣。
然而,雖然這回答了你開始的問題,但在問題的結尾,你似乎要求完全不同的東西:「我想要的就是通過這兩個代碼行對這些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]
但是,如果這些其實都是完整的生產線,並有代替重複說了一大堆人,對於您要搜索的每一行代碼,您可能需要使用set
S的線而不是話,並返回到像我給第一個例子:
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]
這不是Python。 Python沒有'var'關鍵字或分號。你確定你沒有在JavaScript或其他語言中尋找答案嗎? – abarnert 2013-02-16 00:03:41
現在,您已經將整行JavaScript(或任何它)放入字符串中。那麼這是否意味着您正在嘗試搜索任何具有這些JavaScript內容的頁面?因爲如果是這樣,它會更簡單一些。 – abarnert 2013-02-16 01:10:43
@abarnert是的,這就是我試圖做的! – 2013-02-16 20:59:21