如何废弃任何网站并搜索给定的字词并显示其发生的次数
class LinkedinScraper(scrapy.Spider):
name = "linked"
def start_requests(self):
urls = ['https://www.linkedin.com/']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = 'linkedin.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)
答案 0 :(得分:0)
您可以将{regex与response.body
一起使用来查找任何地方的所有出现事项
即
import re
r = re.findall('\\bcat\\b', "cat catalog cattering")
print(len(r), 'cat(s)')
提供"1 cat(s)"
,而不是"3 cat(s)"
如果您只在某些代码中需要字词,那么您首先使用response.css()
,response.xpath()
等。
编辑:
显示如何使用的示例
re.findall(pattern, response.text)
但它也可以在标签内找到文字。
它还显示了如何使用
response.css('body').re(pattern)
在'view'
上计算'\\bviews\\b'
,'\d+ views'
和Stackoverflow
并显示前三个元素
您可以在不创建项目的情况下运行它。
import scrapy
import re
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['https://stackoverflow.com/']
def parse(self, response):
print('url:', response.url)
for pattern in ['view', '\\bviews\\b', '\d+ views']:
print('>>> pattern:', pattern)
result = re.findall(pattern, response.text)
print('>>> re:', len(result), result[0:3])
result = response.css('body').re(pattern)
print('>>> response.re:', len(result), result[0:3])
# --- it runs without project and saves in `output.csv` ---
from scrapy.crawler import CrawlerProcess
c = CrawlerProcess({'USER_AGENT': 'Mozilla/5.0'})
c.crawl(MySpider)
c.start()