抓取时无法获取头条内容
Cannot get headlines content while scraping
我是新手,但我尝试了所有方法来解决这个问题,但没有得到想要的结果。我想抓取这个网站 https://www.accesswire.com/newsroom/ 并且我想抓取所有的头条新闻,当我在浏览器中检查它们时标题会显示但是在使用 bs4 或 selenium 抓取之后,我没有得到完整的 page-Source 代码和也不要上头条。
我已经尝试了 time.sleep(10)
,但这对我来说也不行。我使用 selenium 来获取页面,但这对我也不起作用。
div.column-15 w-col w-col-9
这是标题所在的 class、div
ua = UserAgent()
header = {'user-agent':ua.chrome}
url = "https://www.accesswire.com/newsroom/"
response = requests.get(url, headers=header)
time.sleep(12)
soup = BeautifulSoup(response.content, 'html.parser')
time.sleep(12)
headline_Div = soup.find("div",{"class":"column-15 w-col w-col-9"})
print(headline_Div)
我只想获取本页所有的标题和标题链接
或者至少应该显示一个完整的 page-source 以便我可以自己操作它。
如果 pull 和 parse 不起作用是因为内容是动态的,您将需要 selenium 让实际的浏览器为您生成内容
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://www.accesswire.com/newsroom/')
headline_links = driver.find_elements_by_css_selector('a.headlinelink')
headlines = [link.get_attribute('textContent') for link in headline_links]
你不需要硒。只需使用更高效的请求和页面使用的 API
import re
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://www.accesswire.com/api/newsroom.ashx')
p = re.compile(r" $\('#newslist'\)\.after\('(.*)\);")
html = p.findall(r.text)[0]
soup = bs(html, 'lxml')
headlines = [(item.text, item['href']) for item in soup.select('a.headlinelink')]
print(headlines)
正则表达式解释:
试试正则表达式 here
我是新手,但我尝试了所有方法来解决这个问题,但没有得到想要的结果。我想抓取这个网站 https://www.accesswire.com/newsroom/ 并且我想抓取所有的头条新闻,当我在浏览器中检查它们时标题会显示但是在使用 bs4 或 selenium 抓取之后,我没有得到完整的 page-Source 代码和也不要上头条。
我已经尝试了 time.sleep(10)
,但这对我来说也不行。我使用 selenium 来获取页面,但这对我也不起作用。
div.column-15 w-col w-col-9
这是标题所在的 class、div
ua = UserAgent()
header = {'user-agent':ua.chrome}
url = "https://www.accesswire.com/newsroom/"
response = requests.get(url, headers=header)
time.sleep(12)
soup = BeautifulSoup(response.content, 'html.parser')
time.sleep(12)
headline_Div = soup.find("div",{"class":"column-15 w-col w-col-9"})
print(headline_Div)
我只想获取本页所有的标题和标题链接 或者至少应该显示一个完整的 page-source 以便我可以自己操作它。
如果 pull 和 parse 不起作用是因为内容是动态的,您将需要 selenium 让实际的浏览器为您生成内容
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://www.accesswire.com/newsroom/')
headline_links = driver.find_elements_by_css_selector('a.headlinelink')
headlines = [link.get_attribute('textContent') for link in headline_links]
你不需要硒。只需使用更高效的请求和页面使用的 API
import re
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://www.accesswire.com/api/newsroom.ashx')
p = re.compile(r" $\('#newslist'\)\.after\('(.*)\);")
html = p.findall(r.text)[0]
soup = bs(html, 'lxml')
headlines = [(item.text, item['href']) for item in soup.select('a.headlinelink')]
print(headlines)
正则表达式解释:
试试正则表达式 here