一、requests、bs4
注意:pycharm-终端输入-pip install bs4 下载安装包并导入模块
import requests, time, csvfrom bs4 import BeautifulSoup header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)\ AppleWebKit/537.36(KHTML, like Gecko)Chrome/77.0.3865.120 \ Safari/537.36 Core/1.77.119.400 QQBrowser/10.9.4817.400'} urls = ['https://movie.douban.com/top250?start={}&filter='.format(i * 25) for i in range(10)] movie_directory = [] for url in urls: res = requests.get(url, headers=header) soup = BeautifulSoup(res.text, 'html.parser') item = soup.find_all('div', class_='hd') for i in item: tag = i.find('a') name = tag.find(class_="title").text link = tag['href'] print(name, link) movie_directory.append([name, link]) time.sleep(1.5) print('数据爬取完成') with open('豆瓣电影TOP250.csv', 'w', newline='', encoding='utf-8') as wb: csv_writer = csv.writer(wb) csv_writer.writerow(['影名', '网址']) for i in movie_directory: csv_writer.writerow(i)print('数据写入完成')
复制代码
二、scrapy
注意:pycharm-终端输入-pip install scrapy 下载安装包并导入模块
import scrapy
scrapy startproject + 爬虫项目名称 创建项目。
scrapy startproject scrapypython
cd 爬虫项目名称 scrapy genspider + 爬虫文件名 + 爬取数据域名 创建爬虫文件
cd scrapypython
scrapy genspide douban movie.douban.com
scrapy crawl + 爬虫文件名 执行爬取操作
scrapy crawl douban
1.douban.py(爬虫文件)
import scrapyfrom scrapypython.items import Movie START = 0LIST_URL = ['https://movie.douban.com/top250?start={}&filter='.format(num*25) for num in range(10)] class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['movie.douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse_movie(self, response): for item in response.css('div.item'): movie = Movie() movie['rank'] = item.css('div.pic em::text').get() movie['name'] = item.css('div.info>div.hd>a span.title::text').get() movie['link'] = item.css('div.hd>a::attr(href)').get() movie['score'] = item.css('div.star>span.rating_num::text').get() movie['quote'] = item.css('div.bd>p.quote span.inq::text').get() yield movie def parse(self, response): for url in LIST_URL: yield scrapy.Request(url, self.parse_movie)
复制代码
2.items(爬取目标)
import scrapy class Movie(scrapy.Item): rank = scrapy.Field() #排名 name = scrapy.Field() #影名 link = scrapy.Field() #链接 score = scrapy.Field() #评分 quote = scrapy.Field() #简介
复制代码
3.settings(爬取设置)
BOT_NAME = 'scrapypython' SPIDER_MODULES = ['scrapypython.spiders'] NEWSPIDER_MODULE = 'scrapypython.spiders' ROBOTSTXT_OBEY = True FEED_URI = 'douban.csv'FEED_FORMAT = 'csv'FEED_EXPORT_ENCODING = 'utf-8'DEFAULT_REQUEST_HEADERS = { 'authority': 'movie.douban.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) \AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 \Safari/537.36 Core/1.94.169.400 QQBrowser/11.0.5130.400'}AUTOTHROTTLE_ENABLED = TrueAUTOTHROTTLE_TARGET_CONCURRENCY = 10
复制代码
CSDN 博主「漫步桔田」原文链接:https://blog.csdn.net/u013157570/article/details/125900458
评论