【发布时间】:2016-08-27 22:12:15
【问题描述】:
我正在尝试抓取网站以获取数据,当我到达 18 岁以上的页面时,我收到了一个警告页面。我的爬虫通常可以在大多数 reddit 页面上运行,并且我可以成功获取数据。我尝试使用 selenium 移动到下一页,当它打开浏览器时成功,但爬虫没有跟随到该页面。下面是我的代码..
class DarknetmarketsSpider(scrapy.Spider):
name = "darknetmarkets"
allowed_domains = ["https://www.reddit.com"]
start_urls = (
'http://www.reddit.com/r/darknetmarkets',
)
rules = (Rule(LinkExtractor(allow=()), callback='parse_obj', follow=False),)
def __init__(self):
self.driver = webdriver.Firefox()
def parse(self, response):
self.driver.get('http://www.reddit.com/r/darknetmarkets')
#self.driver.get('https://www.reddit.com/over18?dest=https%3A%2F%2Fwww.reddit.com%2Fr%2Fdarknetmarketsnoobs')
while True:
try:
YES_BUTTON = '//button[@value="yes"]'
next = self.driver.find_element_by_xpath(YES_BUTTON).click()
url = 'http://www.reddit.com/r/darknetmarkets'
next.click()
except:
break
self.driver.close()
item = darknetItem()
item['url'] = []
for link in LinkExtractor(allow=(), deny=self.allowed_domains).extract_links(response):
item['url'].append(link.url)
print link
按钮的css..
<button class="c-btn c-btn-primary" type="submit" name="over18" value="yes">continue</button>
【问题讨论】:
-
Reddit 有an API。
-
我看到大多使用 praw,但更喜欢斗志昂扬的 ..
-
Selenium 和 scrapy 不会相互通信,除非您专门从一个发送到另一个。一旦 selenium 爬取所有网站,所有数据都会丢失
-
啊,有趣,有没有可能在 scrapy 中解决这个问题,那么我想这是我的问题。
标签: python web-scraping scrapy