我要抓取该网站https://hamariweb.com/news/newscategory.aspx?cat=3。代码可以正常工作,但是只能连续从首页抓取数据。 这是我的代码
import scrapy
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from scrapy import Spider, Request
from scrapy import signals
from scrapy.http import HtmlResponse
import time
import os
class WebnewsSpider(scrapy.Spider):
name = 'webnews'
allowed_domains = ['www.hamariweb.com']
start_urls = ['https://hamariweb.com/news/newscategory.aspx?cat=3']
def __init__ (self):
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
self.driver=webdriver.Chrome("C://Users//hammad//Downloads//
chromedriver",chrome_options=options)
def parse(self, response):
self.driver.get(response.url)
pause_time = 1
last_height = self.driver.execute_script("return
document.body.scrollHeight")
#start = datetime.datetime.now()
for i in range(10):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight + 400);")
time.sleep(pause_time)
url2=response.xpath('.//*[@class="news_img"]/a/@href').extract()
print("\n\n\n",url2,"\n\n\n")
new_height = self.driver.execute_script("return document.body.scrollHeight")
self.driver.close()
#print("\n\n",len(l))
答案 0 :(得分:0)
步骤:
更多信息:
您只需执行document.querySelectorAll('#CatNewsList > div').length
结果将是帖子数。
遍历每个帖子并提取URL:
CSS选择器:
#CatNewsList> div .news_img> a
现在,您可以获取标签“ href”并提取链接。
到达最后一个帖子时,执行滚动到底部,然后等待XPATH://p[text()='loading more news... ']
的元素不可见。
像这样,您可以确定页面未加载任何新内容。 保持以前的帖子大小,然后从该大小开始解析到下一个帖子长度。
重复。