山东大学暑期实训-饮食健康管理系统设计与实现(十)

山东大学暑期实训-饮食健康管理系统设计与实现(十)
摘要由CSDN通过智能技术生成

山东大学暑期实训-饮食健康管理系统设计与实现(十)

关于用户信息的爬虫

本篇文章叙述关于用户信息的爬虫代码以及对代码的一些说明。

代码实现

items.py

这个类代表着我们在爬取过程中交互的数据单元。里面的每个字段都是我们要获取或者使用的信息。

import scrapy


class OtherinfoItem(scrapy.Item):

    # 用户id
    user_id = scrapy.Field()
    # 用户昵称
    user_name = scrapy.Field()
    # 用户头像地址
    user_tou_url = scrapy.Field()
    # 用户性别
    user_sex = scrapy.Field()
    # 用户加入时间
    user_res_time = scrapy.Field()

info.py

这是我们主要的爬虫类,在这里产生对特定网址的请求,同时接受响应并解析提取内容,送到管道中去。

import scrapy
import os
import csv
from otherinfo.items import OtherinfoItem
from scrapy.utils.project import get_project_settings


class InfoSpider(scrapy.Spider):
    name = 'info'
    allowed_domains = ['meishichina.com/']
    start_urls = ['https://www.meishichina.com//']

    def parse(self, response):
        # 同时开两个管道
        yield scrapy.Request(url='https://www.meishichina.com//', callback=self.get_user_info, dont_filter=True)
        # 只开图像管道
        # yield scrapy.Request(url='https://www.meishichina.com//', callback=self.supplement_tou, dont_filter=True)
        #  只开用户管道
        # yield scrapy.Request(url='https://www.meishichina.com//', callback=self.supplement_user, dont_filter=True)

    # 对比表user和表4中的id,爬取没有被爬取的
    def get_user_info(self, response):
        with open(get_project_settings().get("USER_TARGET_PATH"), 'r', encoding='utf-8') as f:
            reader = csv.reader(f)
            user_target = list(reader)

        with open(get_project_settings().get("USER_DONE_PATH"), 'r', encoding='utf-8') as f:
            reader = csv.reader(f)
            user_done = list(reader)

        tmp = {
   }
        for t in user_target:
            tmp[t[0]] = t[1]

        for d in user_done:
            tmp[d[0]] = 0

        for k, v in tmp.items():
            if v != 0:
                yield scrapy.Request(url=v, meta={
   'user_id': k}, callback=self.crawl_user_info, dont_filter=True)

    def crawl_user_info(self, response):
        item = OtherinfoItem()

        # 用户id
        user_id = response.meta['user_id']
        item['user_id'] = user_id
        # 用户昵称
        user_name = response.xpath('//div[@class="subname"]//em/a/text()').extract()[0]
        item['user_name'] = user_name
        # 用户头像地址
        user_tou_url = response.xpath('//div[@class="pic"]//img/@src').extract()
        item['user_tou_url'] = user_tou_url

        sex_class = response.xpath('//div[@class="subname"]/i[1]/@class').extract()[0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值