تجريف HTML بايثون
-
22-09-2019 - |
سؤال
إنه ليس مجرد تجريف، أنا فقط أحاول العثور على عناوين URL في صفحة ويب حيث يكون للفصل قيمة محددة.على سبيل المثال:
<a class="myClass" href="/url/7df028f508c4685ddf65987a0bd6f22e">
أريد الحصول على قيمة href.أي أفكار حول كيفية القيام بذلك؟ربما ريكس؟هل يمكنك نشر بعض الأمثلة على التعليمات البرمجية؟أعتقد أن استخراج libs من html، مثل BeautifulSoup، يعتبر مبالغة في هذا الأمر فقط...
بفضل ضخمة!
المحلول
Regex عادةً فكرة سيئة، حاول استخدامه حساء جميل
مثال سريع:
html = #get html
soup = BeautifulSoup(html)
links = soup.findAll('a', attrs={'class': 'myclass'})
for link in links:
#process link
نصائح أخرى
ارغ، لا regex لتحليل HTML!
لحسن الحظ في بايثون لدينا حساء جميل أو com.lxml للقيام بهذه المهمة بالنسبة لنا.
سيكون Regex خيارًا سيئًا.HTML ليست لغة عادية.ماذا عن حساء جميل?
لا ينبغي استخدام Regex لتحليل HTML.يرى الجواب الأول على هذا السؤال للتوضيح :)
+1 للحساء الجميل.
إذا كانت مهمتك بهذه البساطة، فما عليك سوى استخدام معالجة السلسلة (بدون حتى التعبير العادي)
f=open("htmlfile")
for line in f:
if "<a class" in line and "myClass" in line and "href" in line:
s = line [ line.index("href") + len('href="') : ]
print s[:s.index('">')]
f.close()
موزعي HTML ليس ضروريًا لمثل هذه الحالات.
الأمر هو أنني أعرف بنية صفحة HTML، وأريد فقط العثور على هذا النوع المحدد من الروابط (حيث class = "myclass").حساء جميل على أي حال؟
قراءة تحليل HTML بطريقة Cthulhu https://blog.codinghorror.com/parsing-html-the-cthulhu-way/