找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2229|回复: 8

[求助] 爬取网页图片,但无法定位图片源地址

1

主题

3

帖子

3

积分

贫民

积分
3
牛马星的牛马 发表于 2022-3-12 22:41:47 | 显示全部楼层 |阅读模式
代码如下:
  1. import requests,os,bs4,re
  2. os.makedirs('comic',exist_ok=True)
  3. url='https://www.mangabz.com/m219696/'
  4. res=requests.get(url)
  5. soup=bs4.BeautifulSoup(res.text,'html.parser')
  6. message=soup.select('.bottom-page2')
  7. numRegex=re.compile(r'(-)(\d{2})')
  8. pages=numRegex.search(str(message))
  9. pages=int(pages.group(2))
  10. for i in range(1,pages+1):
  11.         urls=url+'#ipg'+str(i)
  12.         res=requests.get(urls)
  13.         soup=bs4.BeautifulSoup(res.text,'html.parser')
  14.         img_message=soup.select('body[class style="padding-top: 74px;"] div')
  15.         print(img_message)
  16.         img_url=img_message.get('src')
  17.         print('Downloading...%s'%(img_url))
  18.         res=requests.get(img_url)
  19.         re.raise_for_status()
  20.         imgFile=open(str(i),'wb')
  21.         for chunk in res.iter_content(10000):
  22.                 imgFile.write(chunk)
  23.         imgFile.close()
  24. print('Done')
复制代码


图片的源地址红框部分,但不知道如何用select()方法定位

图片的源地址红框部分,但不知道如何用select()方法定位
回复

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
qz1zxwzy 发表于 2022-3-23 16:22:59 | 显示全部楼层
直接找最近的那个id标签
select('#imgloading img')
回复 支持 1 反对 0

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
yixianliu 发表于 2022-3-24 16:59:46 | 显示全部楼层
qz1zxwzy 发表于 2022-3-23 16:22
直接找最近的那个id标签
select('#imgloading img')

同理....
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
牛马星的牛马  楼主| 发表于 2022-3-29 17:24:36 | 显示全部楼层
qz1zxwzy 发表于 2022-3-23 16:22
直接找最近的那个id标签
select('#imgloading img')

已经试过了,这样找不到。id='imgloading'不是img src=...的母标签,二者是并列的。

如果打印出img_message,显示的内容为空

如果打印出img_message,显示的内容为空
QQ图片20220329172300.png
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
牛马星的牛马  楼主| 发表于 2022-3-29 17:29:22 | 显示全部楼层
牛马星的牛马 发表于 2022-3-29 17:24
已经试过了,这样找不到。id='imgloading'不是img src=...的母标签,二者是并列的。 ...

如果不直接查找图片源地址

得到的内容信息很少,和html上显示的信息完全不符

得到的内容信息很少,和html上显示的信息完全不符

另外,如果改成查找应当包含图片源地址信息的标签查询

另外,如果改成查找应当包含图片源地址信息的标签查询
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
ztong71 发表于 2022-4-5 16:04:29 | 显示全部楼层
from requests_html import HTMLSession
url = 'https://www.mangabz.com/m219696/'
session = HTMLSession()
for url in [f'https://www.mangabz.com/m219696-p{page}' for page in range(1, 30)]:
    html = session.get(url).html
    html.render(sleep=0.5)
    src = html.find('#cp_image', first=True).attrs['src']
    headers = {'referer': url}
    resp**e = session.get(src,headers=headers, verify=False)
    with open(src.split('?')[0].split('/')[-1], 'wb') as fp:
        fp.write(resp**e.content)
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
cxdl258 发表于 2022-5-7 11:42:32 | 显示全部楼层
网页是动态生成的,直接无法获取。你看网页源代码根本没得
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
sekmart 发表于 2022-5-10 18:30:42 | 显示全部楼层
from selenium import webdriver
import time
from lxml import etree

url = 'https://www.mangabz.com/m219696/'
browser = webdriver.Chrome()
time.sleep(3)
browser.get(url)
time.sleep(5)
html = browser.page_source
parer_html = etree.HTML(html)
message = parer_html.xpath('/html/body/div[2]/div/img/@src')[0]
print(message)
browser.quit()
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
sekmart 发表于 2022-5-12 15:10:29 | 显示全部楼层
  1. from selenium import webdriver
  2. import time
  3. from lxml import etree

  4. url = 'https://www.mangabz.com/m219696/'
  5. browser = webdriver.Chrome()
  6. time.sleep(3)
  7. browser.get(url)
  8. time.sleep(5)
  9. html = browser.page_source
  10. parer_html = etree.HTML(html)
  11. message = parer_html.xpath('/html/body/div[2]/div/img/@src')[0]
  12. print(message)
  13. browser.quit()
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表