难题:尝试添加 url 列失败,因为 url 最初用于提取内容
Conundrum: failed attempt to add a url column since the url was used to extract the content originally
我成功地关注了 this tutorial(parse/scrape 和 python 个请求-html)。然而,当我正要调整代码以添加一个包含 url 的列时,但后来我意识到我将要使用的 class (.question-hyperlink) 已经被用于解析问题本身。
如何向此代码添加 url 列?
结果:
尝试:
def parse_tagged_page(html):
question_summaries = html.find(".question-summary")
key_names = ['question', 'votes', 'tags','summary', 'url']
classes_needed = ['.question-hyperlink', '.vote', '.tags', '.summary', '.question-hyperlink' ]
datas = []
for q_el in question_summaries:
question_data = {}
for i, _class in enumerate(classes_needed):
sub_el = q_el.find(_class, first=True)
keyname = key_names[i]
question_data[keyname] = clean_scraped_data(sub_el.text, keyname=keyname)
datas.append(question_data)
return datas
URL 包含在 a
元素的 href
属性中,将 sub_el.text
传递给函数 clean_scraped_data()
将无济于事。你可能应该重构这个函数:
def clean_scraped_data(el, keyname=None):
if keyname == 'votes':
return el.text.replace('\nvotes', '')
elif keyname == 'url':
return f"https://whosebug.com{el.attrs['href']}"
return el.text
据此调整函数调用:
clean_scraped_data(sub_el, keyname=keyname)
我成功地关注了 this tutorial(parse/scrape 和 python 个请求-html)。然而,当我正要调整代码以添加一个包含 url 的列时,但后来我意识到我将要使用的 class (.question-hyperlink) 已经被用于解析问题本身。
如何向此代码添加 url 列?
结果:
尝试:
def parse_tagged_page(html):
question_summaries = html.find(".question-summary")
key_names = ['question', 'votes', 'tags','summary', 'url']
classes_needed = ['.question-hyperlink', '.vote', '.tags', '.summary', '.question-hyperlink' ]
datas = []
for q_el in question_summaries:
question_data = {}
for i, _class in enumerate(classes_needed):
sub_el = q_el.find(_class, first=True)
keyname = key_names[i]
question_data[keyname] = clean_scraped_data(sub_el.text, keyname=keyname)
datas.append(question_data)
return datas
URL 包含在 a
元素的 href
属性中,将 sub_el.text
传递给函数 clean_scraped_data()
将无济于事。你可能应该重构这个函数:
def clean_scraped_data(el, keyname=None):
if keyname == 'votes':
return el.text.replace('\nvotes', '')
elif keyname == 'url':
return f"https://whosebug.com{el.attrs['href']}"
return el.text
据此调整函数调用:
clean_scraped_data(sub_el, keyname=keyname)