关于正则匹配
a=re.compile(r'<img style=".*?src="(.*?[.]jpg)"',re.S)
我这样直接在html里面匹配为什么什么都没有匹配到 import re
import requests
def get_html(url):
header={
'User-Agent': 'Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 78.0.3904.108Safari / 537.36QIHU360EE'
}
html=requests.get(url=url,headers=header)
print(html.text)
return html
def get_list(html):
a=re.compile(r'<img style=".*?src="(.*?[.]jpg)"',re.S)
link_list=re.findall(a,html.text)
print(link_list)
return link_list
def main():
url='https://image.so.com/i?src=360pic_normal&z=1&i=0&cmg=15484592.3836743514792807400.1594087443636.3574&q=%E5%B8%8C%E5%B2%9B%E3%81%82%E3%81%84%E3%82%8A'
html=get_html(url)
if __name__ == "__main__":
main()
有的时候审核元素会有一些字符不会显示,比如 \ ,你先打印下看看网页的源码,然后在对照着匹配试试看
Twilight6 发表于 2020-7-11 11:02
有的时候审核元素会有一些字符不会显示,比如 \ ,你先打印下看看网页的源码,然后在对照着匹配试试看
...
是查看网页源代码还是打印网页的html? tiger吴 发表于 2020-7-11 11:09
是查看网页源代码还是打印网页的html?
都可以
最好打印 html tiger吴 发表于 2020-7-11 11:09
是查看网页源代码还是打印网页的html?
还有Referer在哪儿找呢 tiger吴 发表于 2020-7-11 11:09
是查看网页源代码还是打印网页的html?
帮你看完了,打印出来的网站源码标签和原本网站的不一致,可能是被反爬,或者是通过另外加载文件的 tiger吴 发表于 2020-7-11 11:11
还有Referer在哪儿找呢
也是在F12 请求头里找的 Twilight6 发表于 2020-7-11 11:02
有的时候审核元素会有一些字符不会显示,比如 \ ,你先打印下看看网页的源码,然后在对照着匹配试试看
...
如图,如果用BeautifulSoup匹配tag
是soup.findall('span',class_='img',style_='…')
style属性的值怎么写呢 本帖最后由 suchocolate 于 2020-7-11 12:06 编辑
看了网页,它把图片信息放到js里了,你这样搜:
def get_list(html):
link_list = re.findall(r'img":"(.*?\.jpg)', html.text)
print(link_list)
return link_list
我这能输出:
tiger吴 发表于 2020-7-11 11:52
如图,如果用BeautifulSoup匹配tag
是soup.findall('span',class_='img',style_='…')
style属性的值怎 ...
你是想匹配 src 嘛? 这样应该可以匹配到,只不过网站是js加载的就匹配不到了吧
x = soup.findall('span',attrs={'style_':'width: 254px; height: 181px;'})
for i in x:
print(i.img['src']) suchocolate 发表于 2020-7-11 12:02
看了网页,它把图片信息放到js里了,你这样搜:
我这能输出:
放图片信息的js怎么查看呢 本帖最后由 suchocolate 于 2020-7-11 14:29 编辑
tiger吴 发表于 2020-7-11 14:21
放图片信息的js怎么查看呢
把网页保存,以 <script type="text/data" 开头的那一行即是。
url = 'https://image.so.com/i?src=360pic_normal&z=1&i=0&cmg=15484592.3836743514792807400.1594087443636.3574&q=%E5%B8%8C%E5%B2%9B%E3%81%82%E3%81%84%E3%82%8A'
headers = {'user-agent': 'Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 78.0.3904.108Safari / 537.36QIHU360EE'}
r = requests.get(url, headers=headers)
with open('r.txt', 'w') as f:
f.write(r.text) suchocolate 发表于 2020-7-11 14:28
把网页保存,以
图片下载好后,点开图片
Image not loaded
Try to open it externalliy to fix format problem
这是怎么情况,格式不对?开始我给图片文件后缀写的.jpg,后面改为.png,结果都是这样 Twilight6 发表于 2020-7-11 12:45
你是想匹配 src 嘛? 这样应该可以匹配到,只不过网站是js加载的就匹配不到了吧
图片下载好后,点开图片
Image not loaded
Try to open it externalliy to fix format problem
这是怎么情况,格式不对?开始我给图片文件后缀写的.jpg,后面改为.png,结果都是这样 tiger吴 发表于 2020-7-11 19:18
图片下载好后,点开图片
Image not loaded
Try to open it externalliy to fix format problem
可能是你爬取写入的有问题 tiger吴 发表于 2020-7-11 18:53
图片下载好后,点开图片
Image not loaded
Try to open it externalliy to fix format problem
上码 suchocolate 发表于 2020-7-12 09:57
上码
import re
import requests
from bs4 import BeautifulSoup
def get_html(url):
header={
'User-Agent': 'Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 78.0.3904.108Safari / 537.36QIHU360EE',
'Referer': 'https: // www.so.com / s?src = 360chrome_newtab_search & q = % E5 % B8 % 8C % E5 % B3 % B6 % E3 % 81 % 82 % E3 % 81 % 84 % E3 % 82 % 8ASec - Fetch - Mode: navigate'
}
html=requests.get(url=url,headers=header)
#print(html.text)
return html
# def get_list(html):
# html=html.text
# soup=BeautifulSoup(html,'html.parser')
# img_re=re.compile('https://p\d[.]ssl[.]qhimgs1[.]com/sdr/400__/.*?[.]jpg')
# img_list=soup.find_all(img_re,soup)
# print(img_list)
#a=re.compile(r'<img style=".*?src="(.*?[.]jpg)"',re.S)
#link_list=re.findall(a,html.text)
#return link_list
def get_list(html):
link_list = re.findall(r'img":"(.*?\.jpg)', html.text)
new_list=[]
for each in link_list:
each=re.sub(r'\\','',each)
new_list.append(each)
#print(new_list)
return new_list
def main():
url='https://image.so.com/i?src=360pic_normal&z=1&i=0&cmg=15484592.3836743514792807400.1594087443636.3574&q=%E5%B8%8C%E5%B2%9B%E3%81%82%E3%81%84%E3%82%8A'
html=get_html(url)
img_list=get_list(html)
#print(img_list)
for img_url in img_list:
#print(img_url)
img_name='美眉/'+img_url.split('/')[-1]
#print(img_name)
with open(img_name,'wb') as f:
# print('开始爬取图片')
html=get_html(img_list)
# print(html.content)
f.write(html.content)
print('爬取成功')
if __name__ == "__main__":
main()
页:
[1]