Python 根据Beauty soup中的链接声明,只解析url
如果页面满足某种条件,其中Python 根据Beauty soup中的链接声明,只解析url,python,python-3.x,parsing,beautifulsoup,html-parsing,Python,Python 3.x,Parsing,Beautifulsoup,Html Parsing,如果页面满足某种条件,其中xx\u web\u job\u alt\u关键字中的一个关键字在job.get\u text()的文本中,我试图最终从页面中解析出url xx_good_jobs = [] xx_web_job_alt_keywords = ['Website'] # <a class="result-title hdrlnk" href="//mywebsite.com/web/123.html" data-id="5966181668">Print business
xx\u web\u job\u alt\u关键字中的一个关键字在job.get\u text()的文本中,我试图最终从页面中解析出url
xx_good_jobs = []
xx_web_job_alt_keywords = ['Website']
# <a class="result-title hdrlnk" href="//mywebsite.com/web/123.html" data-id="5966181668">Print business magazine's website management</a>
each_job_link_details = soup.find_all('a', class_='result-title hdrlnk')
for job in each_job_link_details:
if xx_web_job_alt_keywords in job.get_text():
#append '//mywebsite.com/web/123.html' to list:xx_good_jobs
xx_good_jobs.append(xx_web_job_alt_keywords.get('href',None))
xx_好的工作=[]
xx_网站_工作_alt_关键字=['Website']
#
每个作业链接详细信息=soup.find所有('a',class='result-title hdrlnk')
对于每个作业链接中的作业详细信息:
如果job.get_text()中的xx_web_job_alt_关键字:
#将“//mywebsite.com/web/123.html”添加到列表中:xx\u好工作
xx_good_jobs.append(xx_web_job_alt_关键字.get('href',None))
您对此有何看法?或者,您可以使用以下更明确的方法:
注意,我们使用来检查文本中是否有任何关键字。另外,请注意,我们正在降低关键字和文本,以处理案例中的差异
演示:
[1]中的:从bs4导入BeautifulSoup
在[2]:data=“”
...:
...:
...:
...: """
在[3]中:soup=beautifulsou(数据,“html.parser”)
在[4]:xx_网络_工作_alt_关键字=['Website']
在[5]中:定义所需链接(标记):
…:“”“筛选文本中具有所需关键字的“标题”链接。”“”
...:
…:class_attribute=tag.get('class',[])
…:is_header_link=tag.name=='a'和'result title'在class_属性中,以及'hdrlnk'在cl中
…:ass_属性
...:
…:link_text=tag.get_text()
…:has_keywords=any(link_text中的keyword.lower()。xx_web_job_alt_key中的关键字为lower()
…:字)
...:
…:返回是\u标题\u链接,具有\u关键字
...:
在[6]中:xx_good_jobs=[link['href']表示汤中的链接。查找所有(所需的链接)]
在[7]:xx_好工作
Out[7]:[u'//mywebsite.com/web/123.html']
或者,您可以使用以下更明确的方法:
注意,我们使用来检查文本中是否有任何关键字。另外,请注意,我们正在降低关键字和文本,以处理案例中的差异
演示:
[1]中的:从bs4导入BeautifulSoup
在[2]:data=“”
...:
...:
...:
...: """
在[3]中:soup=beautifulsou(数据,“html.parser”)
在[4]:xx_网络_工作_alt_关键字=['Website']
在[5]中:定义所需链接(标记):
…:“”“筛选文本中具有所需关键字的“标题”链接。”“”
...:
…:class_attribute=tag.get('class',[])
…:is_header_link=tag.name=='a'和'result title'在class_属性中,以及'hdrlnk'在cl中
…:ass_属性
...:
…:link_text=tag.get_text()
…:has_keywords=any(link_text中的keyword.lower()。xx_web_job_alt_key中的关键字为lower()
…:字)
...:
…:返回是\u标题\u链接,具有\u关键字
...:
在[6]中:xx_good_jobs=[link['href']表示汤中的链接。查找所有(所需的链接)]
在[7]:xx_好工作
Out[7]:[u'//mywebsite.com/web/123.html']
编辑:
输出:
只需使用和|
匹配标记中的多个关键字
编辑2:
keyword_lists = [['Website', 'Website', 'business'], ['Website1', 'Website1', 'business1'], ['Website2', 'Website2', 'business2']]
sum(keyword_lists, [])
输出:
编辑:
输出:
只需使用和|
匹配标记中的多个关键字
编辑2:
keyword_lists = [['Website', 'Website', 'business'], ['Website1', 'Website1', 'business1'], ['Website2', 'Website2', 'business2']]
sum(keyword_lists, [])
输出:
实际问题是什么?所有这些伤了我的眼睛=(我提到过:我想从这个网站上获得一系列链接,这些链接的特点是链接a
,带有类结果标题hdrlnk
。然后只看链接的文本,例如文本,如果它包含来自xx\u web\u job\u alt\u关键字'的任何单词,那么把它放在一个名为:xx\u good\u jobs
的列表中真正的问题是什么?所有这些伤了我的眼睛=(我提到过:我想从这个网站上获得一系列链接,这些链接的特点是链接a
,带有类结果标题hdrlnk
。然后只查看链接的文本,例如文本,如果它包含来自xx\u web\u job\u alt\u关键字'的任何单词,那么把它放在一个名为:xx\u good\u jobs
的列表中如果说有不止几个关键字,你能在这里使用一个列表吗?也许你可以显示出来?@Jshee当然,你可以将关键字列表加入一个正则表达式字符串:“|”。join(xx_web_job_alt_关键字)
。你能把它添加到你的解决方案中吗?我真的很喜欢你的优雅solution@Jsheejoin
将列表放入re.compile()中
re.compile
我有点困惑我应该在哪里添加它们。让我们假设这里有不止几个关键字,你能在这里使用一个列表吗?也许你可以展示一下?@Jshee当然,你可以将关键字列表加入一个正则表达式字符串:“|”。join(xx_web_job_alt_关键字)
。你能把它添加到你的解决方案中吗?我真的很喜欢你的优雅solution@Jshee加入列表
并将其放入re.compile()
我有点困惑应该将它们添加到re.compile
import bs4, re
#keywords = ['Website', 'Website', 'business']
html = '''<a class="result-title hdrlnk" href="//mywebsite.com/web/123.html" data-id="5966181668">Print business magazine's website management</a>
<a class="result-title hdrlnk" href="//mywebsite.com/web/123.html" data-id="5966181668">Print business magazine's website management</a>
<a class="result-title hdrlnk" href="//mywebsite.com/web/123.html" data-id="5966181668">Print business magazine's website management</a>'''
soup = bs4.BeautifulSoup(html, 'lxml')
keywords = ['Website', 'Website', 'business']
regex = '|'.join(keywords)
for a in soup.find_all('a', class_="result-title hdrlnk", text=re.compile(regex,re.IGNORECASE)):
print(a.get('href'))
//mywebsite.com/web/123.html
//mywebsite.com/web/123.html
//mywebsite.com/web/123.html
keywords = ['Website', 'Website', 'business']
regex = '|'.join(keywords)
'Website|Website|business'
keyword_lists = [['Website', 'Website', 'business'], ['Website1', 'Website1', 'business1'], ['Website2', 'Website2', 'business2']]
sum(keyword_lists, [])
['Website',
'Website',
'business',
'Website1',
'Website1',
'business1',
'Website2',
'Website2',
'business2']