2
我已經搜索,但無法找到正確的答案,也許我的搜索查詢不正確。但至於這個問題,我有下面的HTML文檔中的下拉值。如何從一個部分使用正則表達式查找選項值
<select style="background: red; color: #fff; padding: 5px;" class="mainNewcat" size="1">
<option>My New List</option>
<option value="http://www.google.com/value1.html">Value 1</option><option value="http://www.google.com/value2.html">Value 2</option><option value="http://www.google.com/value3.html">Value 3</option> </select>
<select style="background: green; color: #fff; padding: 5px;" class="mainOldcat" size="1">
<option>My Old List</option>
<option value="http://www.yahoo.com/cat1.html">Category 1</option><option value="http://www.yahoo.com/cat2.html">Category 2</option><option value="http://www.yahoo.com/cat3.html">Category 3</option> </select>
我在找的是來自我的新列表的網址和文本。到目前爲止,我使用的正則表達式解決方案是首先在「我的新列表」中搜索選項值塊,然後使用另一個正則表達式從第一個結果中搜索url和文本,如下面使用python的RE模塊。
main_regex = re.compile('<select.+?\n.+?New.+?\n(.+?)<\/select>').findall(html)
final_regex = re.compile('value="(.+?)">(.+?)</option>').findall(main_regex)
有沒有比我有更好的解決方案?或者我應該使用一些解析器,而不是正則表達式?
廢話。您的解決方案是理想的解決方案,但我希望避免使用美麗的選項,因爲它會導致像(Rpi)這樣的低端設備出現性能問題。正則表達式的設備比美麗的表現更好。 – user1819085
@ user1819085好吧,如果是這種情況,我們可以加快工作速度。我們可以先使用'lxml'作爲底層解析器:'BeautifulSoup(data,「lxml」)'或者使用湯過濾器類來解析頁面的相關部分。 – alecxe