正则表达式的应用
求大神帮我看看我的正则表达式哪错了。。。还有个问题就是关于图片的地址都在检查里的哪啊。。。有没有快速能找到的方法啊,我好几次看到的都是java 根本找不到jpg格式的。。。import re
import urllib.request
def open_url(url):
req = urllib.request.Request(url)
req.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36')
response = urllib.request.urlopen(req)
html = response.read().decode('GBK')
return html
def get_img(html):
imagelist = re.findall(p,html)
for each in imagelist:
print (each)
if __name__ == '__main__':
url = 'http://tieba.baidu.com/photo/p?kw=%E5%BC%A0%E9%9D%93%E9%A2%96&ie=utf-8&flux=1&tid=7679993387&pic_id=0a090ef3d7ca7bcbc5ea47fffb096b63f724a851&pn=1&fp=2&see_lz=1#!/pid0a090ef3d7ca7bcbc5ea47fffb096b63f724a851/pn1'
get_img(open_url(url))
我写的是 这样的。。
p = r'<img class="image_original_original".*src="[^"]+\.jpg"' 是不是字符串前加了个r,所以失去了转义? 因为这个页面是 js 动态渲染的,在页面源代码中没有 img 标签,主要都是 js 标签 isdkz 发表于 2022-4-28 11:41
因为这个页面是 js 动态渲染的,在页面源代码中没有 img 标签,主要都是 js 标签
那应该怎么快速找到啊。。 我发现现在的大部分页面都是这样的只有js 。。。 isdkz 发表于 2022-4-28 11:41
因为这个页面是 js 动态渲染的,在页面源代码中没有 img 标签,主要都是 js 标签
我最后导出来的html咋是这样的啊。。。。
import re
import urllib.request
import chardet
def get_encoding(res):
coding_method = chardet.detect(res)['encoding']
if coding_method == 'GB2312':
coding_method = 'GBK'
return coding_method
def open_url(url):
req = urllib.request.Request(url)
req.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36')
response = urllib.request.urlopen(req).read()
cod = get_encoding(response)
html = response.decode(cod)
print(html)
return html
def get_img(html):
p = r'src="[^"]+\.jpg"'
imagelist = re.findall(p,html)
print(imagelist)
for each in imagelist:
filename = each.split('/')[-1]
urllib.request.urlretrieve(each , filename , None)
if __name__ == '__main__':
url = 'http://tieba.baidu.com/photo/p?kw=%E5%BC%A0%E9%9D%93%E9%A2%96&ie=utf-8&flux=1&tid=7679993387&pic_id=0a090ef3d7ca7bcbc5ea47fffb096b63f724a851&pn=1&fp=2&see_lz=1#!/pid0a090ef3d7ca7bcbc5ea47fffb096b63f724a851/pn1'
get_img(open_url(url))
isdkz 发表于 2022-4-28 11:41
因为这个页面是 js 动态渲染的,在页面源代码中没有 img 标签,主要都是 js 标签
def find_depth(res):
soup = bs4.BeautifulSoup(res.text, 'html.parser') ##生成一个bs4的对象,或者使用lxml 解析
depth = soup.find('span', class_='next').previous_sibling.previous_sibling.text ##找到class属性为next的span标签,的前前兄弟节点
这个previous_sibling.previous_sibling.text是啥意思啊。。 Victor0321 发表于 2022-4-28 23:52
def find_depth(res):
soup = bs4.BeautifulSoup(res.text, 'html.parser') ##生成一个bs4的对象, ...
就是跟它并列一级的上上个标签的文本 isdkz 发表于 2022-4-29 00:13
就是跟它并列一级的上上个标签的文本
这个并列级 好像很难理解的样子。。。我琢磨了半天 本帖最后由 isdkz 于 2022-4-29 05:55 编辑
Victor0321 发表于 2022-4-29 02:02
这个并列级 好像很难理解的样子。。。我琢磨了半天
有那么难理解吗?同一个目录下的文件就属于并列级,
html 的标签跟目录也差不多,有上一级的,也有同一级的,
学过 html 的话就不难理解 isdkz 发表于 2022-4-29 05:54
有那么难理解吗?同一个目录下的文件就属于并列级,
html 的标签跟目录也差不多,有上一级的,也有 ...
emmm 主要确实还是没学过,,我等下去度娘下 。。 Victor0321 发表于 2022-4-28 01:09
我写的是 这样的。。
p = r'
你要的是哪部分啊,为啥没() Victor0321 发表于 2022-4-28 01:09
我写的是 这样的。。
p = r'
可以去网页用正则工具自己弄一下
页:
[1]