首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在python中从img html中抓取src

如何在python中从img html中抓取src
EN

Stack Overflow用户
提问于 2019-08-23 11:06:02
回答 2查看 525关注 0票数 1

我试图抓取img的src,但我找到的代码返回了许多img src,但不是我想要的那个。我不知道我做错了什么。我在"https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html“上抓取TripAdvisor

这就是我要提取的HTML代码片段:

代码语言:javascript
运行
AI代码解释
复制
 <div class="restaurants-detail-overview-cards-LocationOverviewCard__cardColumn--2ALwF"><h6>Placering og kontaktoplysninger</h6><span><div><span data-test-target="staticMapSnapshot" class=""><img class="restaurants-detail-overview-cards-LocationOverviewCard__mapImage--22-Al" src="https://trip-raster.citymaps.io/staticmap?scale=1&amp;zoom=15&amp;size=347x137&amp;language=da&amp;center=55.687988,12.596316&amp;markers=icon:http%3A%2F%2Fc1.tacdn.com%2F%2Fimg2%2Fmaps%2Ficons%2Fcomponent_map_pins_v1%2FR_Pin_Small.png|55.68799,12.596316"></span></div></span>

我希望代码返回:(来自src的子字符串)

代码语言:javascript
运行
AI代码解释
复制
55.68799,12.596316

我试过了:

代码语言:javascript
运行
AI代码解释
复制
    import pandas as pd
    pd.options.display.max_colwidth = 200
    from urllib.request import urlopen
    from bs4 import BeautifulSoup as bs
    import re

    web_url = "https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html"
    url = urlopen(web_url)
    url_html = url.read()

    soup = bs(url_html, 'lxml')
    soup.find_all('img')

    for link in soup.find_all('img'):
        print(link.get('src'))

返回的内容与此类似,但不是我需要的src:

代码语言:javascript
运行
AI代码解释
复制
https://static.tacdn.com/img2/branding/rebrand/TA_logo_secondary.svg
https://static.tacdn.com/img2/branding/rebrand/TA_logo_primary.svg 
https://static.tacdn.com/img2/branding/rebrand/TA_logo_secondary.svg
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-23 16:13:31

您可以使用requests和re来做到这一点。它只是src的坐标部分,它是基于位置的变量。

代码语言:javascript
运行
AI代码解释
复制
import requests, re

p = re.compile(r'"coords":"(.*?)"')
r = requests.get('https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html')
coords = p.findall(r.text)[1]
src = f'https://trip-raster.citymaps.io/staticmap?scale=1&zoom=15&size=347x137&language=da&center={coords}&markers=icon:http://c1.tacdn.com//img2/maps/icons/component_map_pins_v1/R_Pin_Small.png|{coords}'
print(src)
print(coords)
票数 1
EN

Stack Overflow用户

发布于 2019-08-23 11:33:42

Selenium是一种变通方法,我对它进行了测试,效果非常好。您的位置如下:

代码语言:javascript
运行
AI代码解释
复制
from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')
driver.get("https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html")
links = driver.find_elements_by_xpath("//*[@src]")
urls = []
for link in links:
    url = link.get_attribute('src')
    if '|' in url:
        urls.append(url.split('|')[1])  # saves in a list only the numbers you want i.e. 55.68799,12.596316
    print(url)
print(urls)

上述['55.68799,12.596316']的结果

如果你以前没有使用过selenium,你可以在这里找到一个webdriver https://chromedriver.storage.googleapis.com/index.html?path=2.46/

或者在这里

https://sites.google.com/a/chromium.org/chromedriver/downloads

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57625093

复制
相关文章
Java分隔符
Java有4种普通分隔符,用来作为程序中各种基本成分之间的分隔符: {} 大括号,用来定义复合语句、方法体、类体及数组的初始化; ; 分号,是语句结束的标志; , 逗号,分隔方法的参数和变量说明等; : 冒号,说明语句标号。
小雨的分享社区
2022/10/26
1.1K0
分隔符的简单介绍 C语言中分隔符的作用
在日常生活中,分隔符对于大家来说并不陌生。尤其是现在,越来越多的工作需要依赖的一些文档编辑软件。在这些文档编辑软件中,这种符号有着十分重要的地位,可以充当分页符、换行符等诸多角色。实际上,在计算机编程的C语言中也会用到这种符号。下面就来为大家简单介绍一下。
用户8715145
2021/07/09
2.8K0
Hive应用:选取分隔符
在使用hive的时候,分隔符是必不可少的,当学习的时候使用的都是常规分隔符,比如:逗号“,”、竖线“|”等,这些键盘上都可以直接输入的字符,但是这些字符只要是键盘上的,在针对复杂的业务逻辑的时候,都会失效。
云飞扬
2022/01/05
2.6K0
Hive应用:选取分隔符
python split多个分隔符
1.split不支持同时使用多种字符做分隔符,如果想实现这样的效果,可以用re,例如:
py3study
2020/01/07
4.2K0
python split多个分隔符
java的注释和分隔符
Java提供了单行注释、多行注释和文档注释三种。 单行注释 -// 多行注释 -/**/ 文档注释 -javadoc
用户7886150
2020/12/04
1.9K0
32 - 连接列表中的分隔符
1. 如何将列表中的元素(字符串类型的值)连接在一起(首位相接) a = ['a', 'b', 'c', 'd', 'e'] s = '+' print(s.join(a)) a+b+c+d+e 2. 字符串的join 方法的作用是什么,使用join 应该注意什么,请举例说明 join 方法可以将列表中的字符串类型元素连接起来。并且可以指定元素值直接的分隔符 dirs = '', 'use', 'local', 'xxx', '' print(dirs) path = '/'.join(dirs) prin
ruochen
2021/05/23
1.2K0
32 - 连接列表中的分隔符
sqoop分隔符终极解决方案
分隔符设置不正确,要么导致hive表中行数过多要么导致所有数据到hive后都集中到一列中。在sqoop侧和hive侧都设置正确,数据从其他数据库到hive库后数据总量的准确性才能得到保证。 在sqoop侧,拼装OptionsFileUtil. expandArguments(String[] args)函数的参数时,需要往其接收的数组中指定如下两个重要信息:
高大北
2022/06/14
8810
Hive应用:选取分隔符 原
在使用hive的时候,分隔符是必不可少的,当学习的时候使用的都是常规分隔符,比如:逗号“,”、竖线“|”等,这些键盘上都可以直接输入的字符,但是这些字符只要是键盘上的,在针对复杂的业务逻辑的时候,都会失效。
云飞扬
2019/03/12
2.2K0
Hive应用:选取分隔符
                                                                            原
大数据文件分隔符
背景:DSG数据同步到hadoop平台,发现部分表中数据存在竖线分隔符(“|”),导致hadoop平台数据不准确。 为解决此问题并避免出现内容带分隔符的可能情况,商定分隔符修改为CtrlA(ascii是0x01 ) ,经测试在HDFS可用。
小小工匠
2021/08/16
1.7K0
Hive多分隔符支持示例
如何将上述事例数据加载到Hive表(multi_delimiter_test)中,表结构如下:
Fayson
2018/03/29
3.6K0
Hive多分隔符支持示例
读CSV和狗血的分隔符问题,附解决方法!
使用pandas读入csv文件后,发现列没分割开,所以将sep参数调整为\t,发现还是没分割开,再试空格,再试\s+,即各种空白字符组合,有几例能分隔开,但是还有些列无法分割开。
double
2022/01/26
7.4K0
读CSV和狗血的分隔符问题,附解决方法!
Java list 转字符串并加入,分隔符的方法
List<String> list = new ArrayList<String>(); list.add("aabbcc"); list.add("123456"); System.out.println(list.toString());//[aabbcc, 123456] System.out.println(StringUtils.join(list.toArray(), ","));//aabbcc,123456
似水的流年
2019/12/05
2.5K0
玩转千位分隔符输出
1、Python 1.1 format方法: 2.7版本以上直接用format设置千分位分隔符 Python 2.7 (r27:82500, Nov 23 2010, 18:07:12) [GCC 4.1.2 20070115 (prerelease) (SUSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> format(1234567890,',') '1,
用户1177713
2018/02/24
1.7K0
python基础—分隔符和终止符
可以使用sep和end关键字参数来按照我们想要的输出,例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 >>> print('age',2,3,4) age 2 3 4 >>> print('age',3,4,1.2,sep=',') age,3,4,1.2 >>> print('age',3,4,1.2,sep=',') age,3,4,1.2 >>> print('age',2,3,4.1,sep
dogfei
2020/07/31
1K0
Pig、Hive 自定义输入输出分隔符以及Map、Array嵌套分隔符冲突问题
PIG中输入输出分隔符默认是制表符\t,而到了hive中,默认变成了八进制的\001, 也就是ASCII: ctrl - A Oct   Dec   Hex   ASCII_Char  001   1       01     SOH (start of heading) 官方的解释说是尽量不和文中的字符重复,因此选用了 crtrl - A,单个的字符可以通过 row format delimited fields terminated by '#';  指定,PIG的单个分隔符的也可以通过 PigStor
用户1177713
2018/02/24
1.4K0
Pig、Hive 自定义输入输出分隔符以及Map、Array嵌套分隔符冲突问题
linux shell列转行加分隔符
shell列转行加分隔符 ➜ ~ cat a 123 456 222 3312 ➜ ~ ➜ ~ awk '{printf "%s,",$1}' a 123,456,222,3312,% ➜ sg seq 16396 16405|awk '{printf"%s,",$1}' 16396,16397,16398,16399,16400,16401,16402,16403,16404,16405,%
葫芦
2019/04/17
3.9K0
Netty分隔符和定长解码器使用
  TCP以流的方式进行数据传输,上层的应用协议为了对消息进行区分,往往采用如下4种方式
用户4919348
2019/04/19
1.7K0
Netty分隔符和定长解码器使用
正则表达式-分隔符示例
文本中经常需要匹配分隔符内的内容,像程序中的注释以/*开头,*/结尾;双引号""内的字符等,我们今天以这个例子来一步步的构建这个正则表达式
Dylan Liu
2019/07/01
3K0
js ---- 实现千位分隔符
var num = 1234567; var string = num.toString(); var arr = string.split('').reverse(); console.log(arr); var obj =[]; for(var i=0;i<arr.length;i++){ if(i%3 ===0 && i!==0){ obj.push(','); } obj.push(arr[i]); } obj.reverse()
小蔚
2019/09/11
1.4K0
Matlab以特殊分隔符写入txt(dlmwrite)
  原始数据是1 23 4 78675645,表示用户1对项目23的平分为4,评分的unix时间为78675645。
全栈程序员站长
2022/07/19
4130

相似问题

可以从Python中的Inspect元素中抓取HTML吗?

12

Python -从复杂的HTML中自动抓取表格

124

用Python从网页中抓取表格

43

我可以使用DOM从HTML表格中获取文本吗?

12

在Xamarin UI测试中,我可以通过内部HTML抓取html元素吗

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文