您当前的位置: 首页 >  爬虫

黑马蓝汐

暂无认证

  • 3浏览

    0关注

    89博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

爬虫中教你如何给自己喜欢的博主多个文章点赞

黑马蓝汐 发布时间:2021-11-24 03:25:48 ,浏览量:3

每日分享:

生命里的任何刁难都是野蛮游戏

经历了上次刷评论被禁言,系统提示是有恶意评论嫌疑,那总没有恶意点赞和恶意收藏吧,和评论类似,每日点赞也有上限,大概是15个。

注意:webdriver与xpath不同,webdriver不能像xpath那样直接获取属性值,需要用到

get_attribute函数来获取(本人编写代码时遇到的坑,xpath直接整到了属性值,结果一直报错)

在这之前需要先学会爬取博主文章的网址,不会的小伙伴可以去我之前的博客里看:爬虫中教你如何爬取自己喜欢博主所写文章标题及网址icon-default.png?t=LA92https://blog.csdn.net/qq_52262831/article/details/121484065?spm=1001.2014.3001.5502

在这里我们只需要爬取网址就可以了,代码如下:

import requests
from lxml import etree
from selenium import webdriver
i = 1
# 我访问的博主博客一共23页,观察每一页的网址发现前面都一样,就最后的数字不同
for i in range(24):
    url = 'https://yangyongli.blog.csdn.net/article/list/{}'.format(i)

    headers = {
        'user-agent': '改为你的user-agent',
    }

    response = requests.get(url, headers=headers)
    data = response.content
    # 去除注释(浏览器给你的内容会注释很多有用代码)
    data = data.decode().replace('', '')
    html = etree.HTML(data)
    # 找到网页中的a标签(包括title和link)
    el_list = html.xpath('//*[@id="articleMeList-blog"]/div[2]/div/h4/a')
    # 输出一页有多少个
    print(len(el_list))
    # 每一页爬取的结果放到列表里
    data_list = []
    for el in el_list:
        data_list.append(el.xpath('./@href')[0])
    # 写入文件中
    f = open('../Data_Abstract/fabulous1.txt', 'a', encoding='utf-8')
    for j in data_list:
        f.write(j+'\n')
    f.close()
    print(data_list)

结果:

1. 在博主文章中抓包,进行点赞操作,找到下面这个包:

 

 2. 经过多次抓包可以发现:同一文章中crticleld是相同的,所以想要对多个文章点赞,我们需要找到articleld来源于哪

 3. 在元素中搜索(ctrl+f),发现可以搜到多处结果,选取容易提取的来提取:(因为其放在value属性中,所以容易提取)

 4. 用webdriver提取:

a = driver.find_element('xpath', '//input[contains(@id,"article_id")]')
ID = a.get_attribute('value')

这两行代码即可提取出来(第二行代码作用是获得其value属性值)

5. 然后就注意,之前抓的包中的url,user-agent,请求类型,用一个cookie保持状态即可。

下面直接上源码:

import requests
from selenium import webdriver
# 将网址放到列表中
url_list = []
# fabulous1.txt为得到的网址
f = open('fabulous1.txt', 'r')
for j in f.readlines():
    url_list.append(j.strip())
    # print(j.strip())
f.close()
for i in range(len(url_list)):
    # 文章的网址
    URL = url_list[i]
    # 响应的网址,抓包中like包的url
    url = 'https://blog.csdn.net//phoenix/web/v1/article/like'
    headers = {
        'user-agent': '替换为你的user-agent值',
        'cookie': '替换为你的cookie值'
    }
    driver = webdriver.Chrome()
    driver.get(URL)
    a = driver.find_element('xpath', '//input[contains(@id,"article_id")]')
    ID = a.get_attribute('value')
    driver.quit()
    # //input[contains(@id,"article_id")]/@value
    data = {
        'articleId': ID
    }
    response = requests.post(url, headers=headers, data=data)
    print(response.content)
关注
打赏
1643043582
查看更多评论
立即登录/注册

微信扫码登录

0.0361s