Webscrape CNN、注入、美汤、python、请求、HTML
Webscrape CNN, injection, beautiful soup, python, requests, HTML
好吧,我以为我疯了,因为我在这方面一再失败,但我想,也许 html 发生了一些我不明白的事情。
我一直在尝试从 cnn.com 中抓取 'articles'。
但无论我试过哪种方式soup.find_all('articles'),还是soup.find('body').div('div' )...等带有 class 标签、id 等。失败。
我找到了这个参考:。
我怀疑 html 中的注入是我遇到问题的原因。
除了 'html injection attacks' 网络安全阅读之外,我对注入了解 0。
我想要这些文章,但我假设我需要使用类似于上面另一个堆栈溢出问题 link 的策略。我不知道怎么。帮助文档或特别是 cnn 抓取的链接将不胜感激。
或者如果有人知道我如何获得 html body 元素的 'full data',这样我就可以在我的早期代码中重新排列这个定义,然后重新分配 body。
'或者告诉我我是个白痴而且走错了路'
def build_art_d(site):
url = site
main_l = len(url)
html = requests.get(url).text
soup = BeautifulSoup(html, 'lxml')
print(soup.prettify())
art_dict = {}
body = soup.find('body')
print(body.prettify())
div1 = body.find('div', {'class':'pg-no-rail pg-wrapper'})
section = div1.find('section',{'id' : 'homepage1-zone-1'})
div2 = section.find('div', {'class':'l-container'})
div3 = div2.find('div', {'class':'zn__containers'})
articles = div3.find_all('article')
for art in articles:
art_dict[art.text] = art.href
#test print
for article in art_dict:
print('Article :: {}'.format(article), 'Link :: {}'.format(art_dict[article]))
您可以使用 selenium 来让网站填写数据 javascript。然后使用您现有的 bs4 代码来抓取文章。
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.cnn.com/')
soup = BeautifulSoup(driver.page_source, 'html.parser')
好吧,我以为我疯了,因为我在这方面一再失败,但我想,也许 html 发生了一些我不明白的事情。
我一直在尝试从 cnn.com 中抓取 'articles'。
但无论我试过哪种方式soup.find_all('articles'),还是soup.find('body').div('div' )...等带有 class 标签、id 等。失败。
我找到了这个参考:
我怀疑 html 中的注入是我遇到问题的原因。
除了 'html injection attacks' 网络安全阅读之外,我对注入了解 0。
我想要这些文章,但我假设我需要使用类似于上面另一个堆栈溢出问题 link 的策略。我不知道怎么。帮助文档或特别是 cnn 抓取的链接将不胜感激。
或者如果有人知道我如何获得 html body 元素的 'full data',这样我就可以在我的早期代码中重新排列这个定义,然后重新分配 body。
'或者告诉我我是个白痴而且走错了路'
def build_art_d(site):
url = site
main_l = len(url)
html = requests.get(url).text
soup = BeautifulSoup(html, 'lxml')
print(soup.prettify())
art_dict = {}
body = soup.find('body')
print(body.prettify())
div1 = body.find('div', {'class':'pg-no-rail pg-wrapper'})
section = div1.find('section',{'id' : 'homepage1-zone-1'})
div2 = section.find('div', {'class':'l-container'})
div3 = div2.find('div', {'class':'zn__containers'})
articles = div3.find_all('article')
for art in articles:
art_dict[art.text] = art.href
#test print
for article in art_dict:
print('Article :: {}'.format(article), 'Link :: {}'.format(art_dict[article]))
您可以使用 selenium 来让网站填写数据 javascript。然后使用您现有的 bs4 代码来抓取文章。
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.cnn.com/')
soup = BeautifulSoup(driver.page_source, 'html.parser')