Python 爬虫 请教能实现我的这两点吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
leihongjiang

Python 爬虫 请教能实现我的这两点吗?

  •  
  •   leihongjiang 2020 年 6 月 13 日 5003 次点击
    这是一个创建于 2143 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为自己需要浏览很多的页面,工作量太大,也找不到合适类似的软件. 所以自己想写两个爬虫

    1:根据需要的网站 爬取到标题和 url 根据自己的需求浏览 2:设置关键词 搜索 全部抓取数据 然后设置爬虫判断是否展示

    如果 Python 小白 开始学习的话.需要多长的时间可以.

    43 条回复    2020-06-15 10:02:05 +08:00
    crella
        1
    crella  
       2020 年 6 月 13 日 via Android
    先把要爬的页面和需求发出来
    TimePPT
        2
    TimePPT  
    PRO
       2020 年 6 月 13 日 via Android
    如果需求简单,小白就别爬虫了,chrome 就有采集插件
    wangfj2333
        3
    wangfj2333  
       2020 年 6 月 13 日 via Androd
    我用八爪鱼就没成功过。。
    tomczhen
        4
    tomczhen  
       2020 年 6 月 13 日 via Android
    1. “根据自己的需求浏览” ,所以需求是什么?
    2. “全部抓取数据”,所以全部是怎么定义?
    xingshu1990
        5
    xingshu1990  
       2020 年 6 月 13 日
    学习路线,requests (包括 get 以及 post,知道 header 哪些参数放脚本里能让爬虫爬到数据就好)
    如果目标网站没有数据加密措施,页面内容匹配需要学 re 或者 BS4 或者 XPATH 或者 lxml 。
    另外还有数据保存,比如保存 txt mysql excel 等。
    somalia
        6
    somalia  
       2020 年 6 月 13 日
    火车头怎么样
    lilydjwg
        7
    lilydjwg  
       2020 年 6 月 13 日
    看起来需求是浏览网页时做辅助。那么,浏览器扩展它不香么?
    leihongjiang
        8
    leihongjiang  
    OP
       2020 年 6 月 13 日
    @tomczhen 我需要看这篇文章 然后打开链接就可以了.
    全部抓取 就是抓取 搜索到的所有页面 然后设置判断
    imn1
        9
    imn1  
       2020 年 6 月 13 日   1
    我知道这种需求,以前有考虑过,放弃
    实际上就是针对没有 sitemap 、没有站内搜索,或者这两方面做得不好的站点,自己按需导航
    例如 V2EX 的节点 sitemap 还过得去,但站内搜索就……

    放弃原因并不是难写,而是耗费储存空间、耗时,一个工作要么空间换时间、要么时间换空间,两者都耗费就不值得做
    而且这样爬不仅仅是一两天的事,是个常态,这样就极可能被网站 ban,得不偿失

    建议善用 Ctrl-F 或者写页内脚本,把不想看的内容 display:none,或者 highlight 想看的内容
    dsg001
        10
    dsg001  
       2020 年 6 月 13 日
    html,css,xpath,正则,如果这些都熟,专心学下 python 一个月差不多了
    leihongjiang
        11
    leihongjiang  
    OP
       2020 年 6 月 13 日
    @lilydjwg 有可以聚合的吗.
    leihongjiang
        12
    leihongjiang  
    OP
       2020 年 6 月 13 日
    @imn1 如果有成品的采集 不是更方便吗
    leihongjiang
        13
    leihongjiang  
    OP
       2020 年 6 月 13 日
    @TimePPT 给推荐下
    leihongjiang
        14
    leihongjiang  
    OP
       2020 年 6 月 13 日
    @wangfj2333 八爪鱼能抓取 跳转后的链接吗
    leihongjiang
        15
    leihongjiang  
    OP
       2020 年 6 月 13 日
    @somalia 火车头需要单击点开 某个任务 才能查看到数据
    leihongjiang
        16
    leihongjiang  
    OP
       2020 年 6 月 13 日
    @dsg001 如果我只抓取 10 个网站的 首页更新的文章 有什么好的办法吗.毕竟一个月太长了
    lilydjwg
        17
    lilydjwg  
       2020 年 6 月 13 日
    @leihongjiang #11 我的意思是你自己按你的需求写。
    dsg001
        18
    dsg001  
       2020 年 6 月 13 日
    @leihongjiang 外包?或者把需求写清楚,偶尔有大手子顺手就写了
    GG668v26Fd55CP5W
        19
    GG668v26Fd55CP5W  
       2020 年 6 月 13 日 via iPhone
    挺简单,小白也很容易,一周应该能搞搞定了吧,就模拟请求,读写文件,字符串处理,如果有 RSS feed,就更简单了。
    Junn
        20
    Junn  
       2020 年 6 月 13 日
    PY 爬虫的实例教程看一两个,然后 PY 基本语法什么教程看一遍,1 ~ 2 天吧
    看 HTML 、CSS 、正则等等相关教程,1 天吧
    参考教程、文档、根据自己需求开始干,1 ~ 2 天吧

    总体努力的话 1 周可以了~
    tlday
        21
    tlday  
       2020 年 6 月 13 日
    @falcon05 并不是每个网站都有 RSS feed,也不是每个网站的 sitemap 都健全,还有一些 SPA 单页应用的网站链接和内容是动态 js 渲染的,对于一些搜索功能很差甚至没有搜索功能的网站,这个需求约等于抓取整个网站的内容。所以你需要知道以怎样的方式才能找齐“整站所有内容”,上面 @imn1 的回复才是针对需求了解的比较清楚的。楼主不给具体的网站,说很简单很容易有点太武断了。
    GG668v26Fd55CP5W
        22
    GG668v26Fd55CP5W  
       2020 年 6 月 13 日 via iPhone
    @tlday 内容格式只是一个小方面,没有说 rss 是必需的啊,楼主是只看首页的更新文章,有 RSS 就弄个 RSS/xml 解析器,有 json 接口的就解析 json,即便都没有只有 html,就找个 html 解析器,也不是很大的问题,beautifulsoup 的教程烂大街。我并没有说正则,因为楼主说自己是小白。
    xiaozizayang
        23
    xiaozizayang  
       2020 年 6 月 13 日
    到宣传自己开源项目的时候了: https://github.com/howie6879/ruia

    说正事,楼主花个几百块让大学生写事情就搞定了~~
    hbolive
        24
    hbolive  
       2020 年 6 月 13 日
    感觉就是个定制版的百度搜索,输入关键字,然后设置些条件(比如我设置不显示 csdn 的),符合的就显示。。
    myCupOfTea
        25
    myCupOfTea  
       2020 年 6 月 13 日
    用 scrapy 太简单了,几行代码就完事了
    xingshu1990
        26
    xingshu1990  
       2020 年 6 月 13 日
    @myCupOfTea scrapy 的学习成本 比我在 5 楼里说的还高,scrapy 的安装就比较困难,更别说后面的启动命令。
    leihongjiang
        27
    leihongjiang  
    OP
       2020 年 6 月 13 日
    我怎么感觉应该不难啊 估计我没把我的要求表达清楚
    页面 1-10 每个页面设置 单独的 xpath 定位 获得 title 和 rul 的值
    然后 10 个页面爬取到的数据 按照时间倒序显示 显示爬取的时间
    然后设定多久爬取的时间 然后输入到某个地方

    例如:网站 A 更新了新的文章 然后我就可以看到 B 更新了文章 我可以看到.
    lithbitren
        28
    lithbitren  
       2020 年 6 月 13 日
    对于入门来说,这种一般都坑在数据持久化吧,爬虫部分一般几行就能解决,html 看不懂都可以
    hgjian
        29
    hgjian  
       2020 年 6 月 13 日 via Android
    nodejs+puppeteer
    Cy086
        30
    Cy086  
       2020 年 6 月 13 日
    @myCupOfTea 如果有反爬呢
    Cy086
        31
    Cy086  
       2020 年 6 月 13 日
    不如发一个网址出来, 大家瞅瞅好不好爬, 是否有反爬措施再给你推荐思路
    winnerczwx
        32
    winnerczwx  
       2020 年 6 月 13 日 via iPhone
    @xingshu1990 感觉你用错方法了,scrapy 安装不是一句 pip 就行了吗?熟悉框架后新建一个项目也就 5 分钟左右全部配置好,可以开始写业务了。启动爬虫也就是一句代码的事。至于学习成本,我感觉它的文档做的还不错,比较齐全
    icegaze
        33
    icegaze  
       2020 年 6 月 13 日 via Android
    二十年前我用的是 telportpro
    完全满足抓取网站网页的需求,,,^_^
    leihongjiang
        34
    leihongjiang  
    OP
       2020 年 6 月 13 日
    justin2018
        35
    justin2018  
       2020 年 6 月 13 日
    http://www.locoy.com/ 火车头~ 快速 满足楼主需求 还不用学习 python
    crella
        36
    crella  
       2020 年 6 月 13 日
    我写的 ruby 脚本,数据以 data.json 存在文件夹里。
    页面解析的大概流程:打开“开发人员工具”,切换到 Network 标签,选中 XHR,点击页面上的”加载更多“按钮,看到加载的请求如图: https://sm.ms/image/hGYR8yJce4WXL7a
    多点几次,发现访问的页面形式是 https://www.aidiyu.com/wangzhan/page/页面序号(数字),选择其中一页进行分析。

    接下来 xpath 的分析直接参考代码中的实现。先按 xpath:<article id="post-ID" ...>来选择项目,再分析每个项目的值。

    代码: https://gitee.com/crella/codes/guori0c8dh9s6myz32b5n96

    @leihongjiang

    python 对应用 lxml 或者 beautifulsoup,写的 xpath 与 ruby 的 Nokogiri 的形式可能有不同。
    crella
        37
    crella  
       2020 年 6 月 13 日
    gitee 又抽风了?我设置代码的权限为”公开“的。
    代码换个地址: https://gitee.com/crella/rubycode/blob/master/aidiyu.rb
    myCupOfTea
        38
    myCupOfTea  
       2020 年 6 月 14 日
    @Cy086 scrapy 只支持中间件,加个代理就行了,反正确实挺简单的
    myCupOfTea
        39
    myCupOfTea  
       2020 年 6 月 14 日
    @xingshu1990 scrapy 安装也难吗?直接用 conda 啊
    myCupOfTea
        40
    myCupOfTea  
       2020 年 6 月 14 日
    @Cy086 多了个只
    myCupOfTea
        41
    myCupOfTea  
       2020 年 6 月 14 日
    @xingshu1990 主要 scrapy 还有个 shell,可以很方便新手测试
    xingshu1990
        42
    xingshu1990  
       2020 年 6 月 15 日
    @myCupOfTea 楼主要是会看文档就能上手 scrapy,就不会过来问问题了。
    如果不考虑 linux 还是 windown,当然是 anaconda 就好了,如果是 windown,还要看是 7 还是 10 以及里面的关联库的版本,windown 经常是不能正确安装 pypiwin32 或者 ssl 版本有问题,或者是 lxml 安装报错之类的问题,对于初学者来说学习成本会很大。
    myCupOfTea
        43
    myCupOfTea  
       2020 年 6 月 15 日
    @xingshu1990 俺有次没用 anaconda,自己安装确实坑特别多,搞了半天最后说我 openssl 有问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2717 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 76ms UTC 06:14 PVG 14:14 LAX 23:14 JFK 02:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86