gpt4 book ai didi

python - 一些帮助在 python 中抓取页面

转载 作者:行者123 更新时间:2023-12-05 07:08:59 24 4
gpt4 key购买 nike

我已经抓取了文章的描述。现在,我试图从 BBC 新闻网站抓取视频的描述,但它返回一个空字符串。有什么建议吗??!!

这是我的代码:

class BbcNewsSpider(CrawlSpider):
name = 'BBCNews'
start_urls = ['https://www.bbc.com/']
rules=(Rule(LinkExtractor(restrict_xpaths="//li[contains(@class,'orb-nav-home')]//a",
process_value=lambda x:x[0:16]+'com'),
callback='parse_home'),
Rule(LinkExtractor(allow='bbc.com',
restrict_xpaths='//div[contains(@class,"module__content")]'
'//div[contains(@class,"media") and not
(contains(@class,"media--icon"))]'
'//a[contains(@class,"block-link__overlay-link")]'
, process_value=lambda x: 'https://www.bbc.com' + x if x[0:1] == "/" else x),
callback='parse_item'),
)

这是我正在使用的函数:

  def parse_home(self,response):
if response.status==200:
doc = pq(response.text)
medias = doc('div.media--video').items()
for media in medias:
item=BbcmediaItem()
item['url'] = media.find('a.media__link').attr('href')
item['title']=media.find('a.media__link').text().strip()
item['Type']=media.find('a.media__tag').text()
item['description']=media.find('p.story-body__introduction').text().strip()
yield item

最佳答案

我自己制作了一个从雅虎新闻中抓取标题的抓取工具。你的代码没问题。问题是 BBC 新闻可能不允许您抓取视频的描述

尝试使用代理。

抓取雅虎新闻。因为抓取它很容易

这是我的代码,它从雅虎新闻中抓取所有段落,您可以将其更改为您喜欢的任何内容

import bs4
import requests
import sys
import re
import unicodedata
import os
import random
import datetime

Current_Date_Formatted = datetime.datetime.today().strftime ('%d-%b-%Y -- %H:%M')
time = str(Current_Date_Formatted)

filename = "Yahoo World News " + time

filename=r"D:\Huzefa\Desktop\News\World\\" +filename+ ".txt"
url = "https://news.yahoo.com/"
res = requests.get(url)
soup = bs4.BeautifulSoup(res.text, "lxml")
##
file = open(filename , 'wb')
for i in soup.select("p"):
f=i.text
file.write(unicodedata.normalize('NFD', re.sub("[\(\[].*?[\)\]]", "", f)).encode('ascii', 'ignore'))
file.write(unicodedata.normalize('NFD', re.sub("[\(\[].*?[\)\]]", "", os.linesep)).encode('ascii', 'ignore'))
file.write(unicodedata.normalize('NFD', re.sub("[\(\[].*?[\)\]]", "", os.linesep)).encode('ascii', 'ignore'))
file.close()

希望这对你有用 =)

关于python - 一些帮助在 python 中抓取页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61767016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com