[求助] 关于新手爬虫实例 - V2EX
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jeblur

[求助] 关于新手爬虫实例

  •  
  •   jeblur Apr 12, 2020 2784 views
    This topic created in 2221 days ago, the information mentioned may be changed or developed.

    最近看了些关于爬虫的视频,根据视频的代码来找其他的一些网站试试水,代码写好后运行发现没报错但是也没有抓到图片,代码如下:

    import requests import re import time import os """Web Requests""" def getOnePage(n): html = f'http://www.win4000.com/wallpaper_detail_167506_{n}.html' respOnse= requests.get(html) return response.text """Content Traverse""" def parse(html): url = re.findall('<img class=".*?" src="(.*?)" alt=".*?" title=".*?"/>',html) print(url) return url """Save Pictures""" def save2pic(url): pic_name = url.split('/')[-1] with open(pic_name, 'wb') as f: f.write(url.content) def run(): for n in range(1,10): html = getOnePage(n) items = parse(html) for item in items: save2pic(item) if "__name__" == "__main__": run() 

    自我感觉问题是在保存数据目录这里,还有 parse 函数可能也有问题,因为没有显示 print 的数据。

    希望各位前辈指导下,感激不尽!

    还有一个小问题,是关于使用 xpath 抓取 url 如何写呢,视频中的写法是:

    html = etree.HTML(text) names = html.xpath('') 

    其中的 HTML 是一个固定用法吗?这样做变成了一个列表,会影响后续 url 提取到图片吗?

    问题可能很小白,但是还是希望各位大大能给些意见,再次感谢!

    9 replies    2020-04-12 08:46:58 +08:00
    crella
        1
    crella  
       Apr 12, 2020
    你只是从网页里获取到图片的地址,并没有添加“把图片下载下来”的过程啊
    jeblur
        2
    jeblur  
    OP
       Apr 12, 2020 via iPad
    @crella 我这个 save2pic 函数不能保存到文件吗。。
    crella
        3
    crella  
       Apr 12, 2020
    """Save Pictures"""
    def save2pic(url):
    (1 个 tab)pic_name = url.split('/')[-1] # 把 url 中图片的真实文件名 fn 提取出来
    (1 个 tab)with open(pic_name, 'wb') as f: # 在本地创建一个文件,文件名为 fn,按二进制模式覆盖写入,句柄为 f
    (2 个 tab)f.write(url.content) # f 句柄写入 url 的内容

    那么 url 到底是指"http://website.com/1.jpg"这个文本还是指 1.jpg 的内容呢? 你上一步是怎么处理的?

    我不懂编程的,仅供参考
    gwy15
        4
    gwy15  
       Apr 12, 2020 via Android
    __name__不加引号……
    gwy15
        5
    gwy15  
       Apr 12, 2020 via Android
    1.上面说的问题,你根本就没进到主函数里面。
    2.写注释是好习惯,但是 py 的 docstring 是写在 def 下面第一行。
    3.parse 返回的是 findall 结果(一个 list of str ),你处理的过程是直接把 str.content 写进去了。这里也得用 requests 先 get 。
    jeblur
        6
    jeblur  
    OP
       Apr 12, 2020 via iPad
    @crella 我的理解是这个 url 是由 parse 函数分离并送过来图片真实 url,所以原因是因为无法从 url 直接到文件?还需要中间再转一层?
    jeblur
        7
    jeblur  
    OP
       Apr 12, 2020 via iPad
    @gwy15
    @crella
    感谢回复,今天实在夯不动了,明天按照你们给的建议再捣腾下!
    cctv6
        8
    cctv6  
       Apr 12, 2020 via iPhone
    gey15 说的没错 ,if "__name__" == "__main__",这里__name__不加引号。这里错了,后面的 run()也不会运行,自然也没有后面的 print(url)。
    jeblur
        9
    jeblur  
    OP
       Apr 12, 2020
    @gwy15
    @cdlnls
    @crella
    感谢各位,代码跑通了
    About     Help     Advertise     Blog     API     FAQ     Solana     2792 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 15:40 PVG 23:40 LAX 08:40 JFK 11:40
    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