爬虫day4

摘要
话不多说我们先上需求
模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容。
丁香园论坛:http://www.dxy.cn/bbs/thread/626626#626626
这个任物有一个知识点 就是cookies 的使用下面我们来介绍一下cookies 是什么
Cookie 是您造访过的网站所建立的档案,可储存您的浏览资讯,提供您更流畅方便的网路使用体验。启用 Cookie 后,网站就可让您保持登入状态、记住您的网站偏好设定,并提供您与所在地相关的内容。
Cookie 分为以下两类:
第一方 Cookie 是由您浏览的网站所建立,也就是网址列中所显示的网站。
第三方 Cookie 是由其他网站所建立。这类网站通常是在您浏览的网站上提供部分内容 (例如广告或图片)
的其他网站。
根据上面的解释 我们可以知道cookies是用来储存我们浏览器的浏览资讯,那我们该如何找到带有登陆资讯的cookies呢??请仓考以下流程:

  1. 打开chrome
  2. 连接到目标网站 并完成登陆
  3. 登陆成功之后F12 叫出工程人员模式 之后按F5

    找到network并选取XHR标签
    在这里插入图片描述
    之后找到这里的cookie 就是我们的目标了 复制下来 在requests 里面添加cookies
cookies = {
            'cookie': '你的cookies'
        }
        url = 'http://www.dxy.cn/bbs/thread/626626#626626'
        req = requests.get(url, cookies=cookies)  #

完整代码请参考实作
实作

import requests
from bs4 import BeautifulSoup
import selenium


class Taks7:
    def __init__(self):
        pass

    def get_info(self):
        data = {}
        data2 = {}
        cookies = {
            'cookie': 'your cookie'
        }
        url = 'http://www.dxy.cn/bbs/thread/626626#626626'
        req = requests.get(url, cookies=cookies)  #
        soup = BeautifulSoup(req.text, 'html.parser')
        title = soup.find('title')
        data['title'] = title.text
        author_say_tags = soup.find('meta', attrs={'property': "og:description"})
        author_say_tag = author_say_tags.attrs
        author_say = author_say_tag['content']
        details = soup.find_all('div', attrs={'class': 'info clearfix'})
        user_atten = soup.find_all('div', attrs={'class': 'user_atten'})
        auth_name = soup.find_all('div', attrs={'class': "auth"})
        data['author_say'] = author_say
        recoverys = soup.find_all('td', attrs={'class': "postbody"})
        for i in range(len(recoverys)):
            data['auth_name'] = auth_name[i].text
            data['user_atten'] = user_atten[i].text.strip().split()
            data['info_clearfix'] = details[i].text.replace('\n', '')
            data['recovery'] = recoverys[i].text.strip()

            print(data)


a = Taks7().get_info()

猜你喜欢

转载自blog.csdn.net/dfy20020530/article/details/89282386