当前位置: 首页 > news >正文

有找专业做淘宝网站的美工网站外部推广

有找专业做淘宝网站的美工,网站外部推广,满屏网站设计做多大,宁晋seo网站优化排名爬取豆瓣(线程、Session)优化版本 该文章只是为了精进基础,对Session、threading、网站请求解析的理解。 此版本没有爬取详情页。还在学习阶段的读者可以尝试一下。 适用于基础刚开始学习爬虫的! 1.改进点: 将普通的r…

爬取豆瓣(线程、Session)优化版本

该文章只是为了精进基础,对Session、threading、网站请求解析的理解。
此版本没有爬取详情页。还在学习阶段的读者可以尝试一下。
适用于基础刚开始学习爬虫的!

1.改进点:

  1. 将普通的requests.get换成了requests.Session()
  2. 增加了多线程threading

2.运行条件

pip install -i https://mirrors.aliyun.com/pypi/simple pymongo
pip install -i https://mirrors.aliyun.com/pypi/simple requests

PyCharm安装和破解

2.1.MongoDB下载地址

MongoDB打开地址选择4.4版本即可,或者其他版本。可视化工具可以下载Navicat Premium

3.Session

Session的作用在第一次请求之后,服务端响应的Cookie信息,在下次请求的时候会自动添加上去。

4.分析过程

  1. 打开网址豆瓣电影
  2. F12分析请求过程。
  3. 根据电影名称搜索在哪个请求响应体中。
  4. 分析此URL,调整tagpage_limit可以变更获取的内容。
    在这里插入图片描述
    在这里插入图片描述

5.配置参数

import time
import requests
from pymongo import MongoClient
import threading
import logginglogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')# 定义全局session,用于保存cookie
session = requests.Session()INDEX_URL = 'https://movie.douban.com/j/search_subjects?type=movie&tag={tag}&page_limit={page}'  # 类型的url
DETAIL_URL = 'https://movie.douban.com/subject/{id}'  # 详情的urlheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36','Referer': 'https://movie.douban.com/',
}# session设置某些全局请求头配置项目
session.headers = headers# 定义mongo链接
MONGO_URL = 'mongodb://localhost:27017'
MONGO_DB = 'douban_data'
COLLECTION_INDEX = 'douban_index'
COLLECTION_DETAIL = 'douban_detail'mongo = MongoClient(MONGO_URL)  # 链接mongo
db = mongo[MONGO_DB]  # 选择数据库
coll_index = db[COLLECTION_INDEX]  # 首页的
coll_detail = db[COLLECTION_DETAIL]  # 电影详情页的存储集合tags = None  # 类型

6.获取电影类别信息

# 获取类型:https://movie.douban.com/j/search_tags?type=movie&source=index
def get_type():"""获取电影类型"""global tagsurl = 'https://movie.douban.com/j/search_tags?type=movie&source=index'response = session.get(url=url)tags = dict(response.json())['tags']logging.info('获取类型:%s' % tags)

7.请求并获取JSON数据

其中time.sleep()用来模拟网络请求延迟。测试多线程是否有效!

def spider_index(url):"""根据获取的类型挨个获取电影信息"""logging.info('开始获取:%s' % url)try:response_index = session.get(url=url)subjects = dict(response_index.json()).get('subjects')# logging.info('请求成功内容:%s' % subjects)time.sleep(2)  # 模拟网络延迟for subject in subjects:# 写入mongodbcoll_index.insert_one(subject)except Exception as e:logging.error('请求出现异常!!!')

8.目前没有爬取详情页,后续完善!

9.完整代码

import time
import requests
from pymongo import MongoClient
import threading
import logginglogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')# 定义全局session,用于保存cookie
session = requests.Session()INDEX_URL = 'https://movie.douban.com/j/search_subjects?type=movie&tag={tag}&page_limit={page}'  # 类型的url
DETAIL_URL = 'https://movie.douban.com/subject/{id}'  # 详情的urlheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36','Referer': 'https://movie.douban.com/',
}# session设置某些全局请求头配置项目
session.headers = headers# 定义mongo链接
MONGO_URL = 'mongodb://localhost:27017'
MONGO_DB = 'douban_data'
COLLECTION_INDEX = 'douban_index'
COLLECTION_DETAIL = 'douban_detail'mongo = MongoClient(MONGO_URL)  # 链接mongo
db = mongo[MONGO_DB]  # 选择数据库
coll_index = db[COLLECTION_INDEX]  # 首页的
coll_detail = db[COLLECTION_DETAIL]  # 电影详情页的存储集合tags = None  # 类型# 获取类型:https://movie.douban.com/j/search_tags?type=movie&source=index
def get_type():"""获取电影类型"""global tagsurl = 'https://movie.douban.com/j/search_tags?type=movie&source=index'response = session.get(url=url)tags = dict(response.json())['tags']logging.info('获取类型:%s' % tags)def spider_index(url):"""根据获取的类型挨个获取电影信息"""logging.info('开始获取:%s' % url)try:response_index = session.get(url=url)subjects = dict(response_index.json()).get('subjects')# logging.info('请求成功内容:%s' % subjects)time.sleep(2)  # 模拟网络延迟for subject in subjects:# 写入mongodbcoll_index.insert_one(subject)except Exception as e:logging.error('请求出现异常!!!')if __name__ == '__main__':get_type()tasks = [INDEX_URL.format(tag=tag, page=250) for tag in tags]threads = []  # 创建线程列表for task in tasks:threads.append(threading.Thread(target=spider_index, args=(task,)))for thread in threads:thread.start()
http://www.yayakq.cn/news/175024/

相关文章:

  • 网站开发协议中的注意事项上海网站公司建设
  • 烟台网站制作软件黟县网站建设
  • 网站如何做会员登录页面一个网站的tdk是指网站的
  • 网站套餐报价 模版wordpress 代码位置
  • 亚马逊如何做折扣网站的营销wordpress选项卡分页
  • 住房和城乡建设部网站施工员客套企业名录搜索软件
  • 怎么查看网站是否被百度收录学网站开发多久
  • 湛江网站建设公司网页设计模板设计
  • 景区网站的作用我要自学网网页制作视频教程
  • 韩国网站设计欣赏无锡网站建设开发
  • 网站建设需解决问题织梦软件展示网站源码
  • 珠海专业网站建设价格重庆专业做淘宝网站
  • 软件公司网站模板图片传统企业营销型网站建设
  • 怀化建设网站模板之家网页模板
  • 文化共享工程网站建设情况如何在手机上建立自己的网站
  • 做百度网站找谁怎么做像天猫类似的网站
  • 天山路街道网站建设wordpress动漫整站
  • 网站网络服务器是什么情况安顺网站开发
  • 网站定制论文1500字左右单职业传奇手机手游版
  • 水果网站策划书网络公司排名前十名有哪些
  • 表白网站生成器html静态网页作业成品
  • 做网站干什么互联网推广seo
  • 马上飞做的一些网站织梦网站调用工具
  • 正规网站建设哪家好升级网页
  • 大气公司网站源码空间做网站
  • 高端网站制作报价企业网站带数据库
  • 企业网站建设费是无形资产吗应用开发工具有哪些
  • 做兼职的网站 知乎南昌网络排名优化
  • 网站建设顾问电子商务网站建设的步骤一般为
  • 做微信的网站叫什么电商网站开发价格