pyspider爬知乎问题跟评论

本文介绍了如何利用pyspider进行网页选择器操作,如CSS选择器和type()方法。详细讲解了pyspider脚本结构,包括text()与html()的区别。还涉及到了脚本登录方式,如表单和cookie登录,并讨论了如何处理知乎图片的src问题,特别是针对SVG图片的base64编码。此外,还涵盖了数据库连接与插入操作,以及爬取知乎问题和评论的策略。
摘要由CSDN通过智能技术生成


备注,本文说的脚本图片不下载,采用的是保存src链接

Elements 选择器

CSS选择器参考手册

在这里插入图片描述
·例如 response.doc('a.title')检索到的标签就是<a class ="tltle" >
`

type()

from pyquery import PyQuery as pq

doc = pq(url='http://www.baidu.com')
print(type(doc))

得到的结果为 <class 'pyquery.pyquery.PyQuery'>,属于type类型,而其他类似response.doc()获取的均为HtmlElement类型,可使用type()转换

`

pyspider脚本结构介绍

from pyspider.libs.base_handler import *


class Handler(BaseHandler):
    crawl_config = {
   	#配置
    }

    @every(minutes=24 * 60)	#活动周期	24*60minutes
    def on_start(self):		#脚本入口
        self.crawl('crawl_url', callback=self.index_page)	#callback调用index_page

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
    	#response.doc获取htmlElement 括号内可使用css选择
        for each in response.doc('a[href^="http"]').items():
        
            self.crawl(each.attr.href, callback=self.detail_page)

    @config(priority=2)
    def detail_page(self, response):
        return {
   
            "url": response.url,
            "title": response.doc('title').text(),
        }

·

text() 跟 html()的区别

luoyu6 JQuery中的text(),html()和val()区别

text() 只输出标签内的文本内容
在这里插入图片描述
html() 输出的结果会带有标签
在这里插入图片描述

H
·

脚本登录

表单登录

import requests

#发送表单登录
payload = {
   'username':'xx', 'password':'xx'}
r = s.post('url', data = payload)
print(r.content)
s = requests.session()
print(s.get('request_url').content)

cookie登录

s.get('http://xxxxx/login', cookies={
   "token": "xxx"}).content
crawl_config = {
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值