爬取sankakucomplex的图片
学习python 两个月了,终于自己动手做了一个爬虫,如有什么错误还望斧正!
以下是爬取图片的思路:
1.用requests库爬取到图片url
2.用BeautifulSoup4库把爬取到的respond内容解析
3.用os库把二进制图片保存到本地
1.requests库获得到图片url
import requests
url="https://chan.sankakucomplex.com"
kv = {
'user-agent': 'Chrome/10.0'}
r = requests.get(url,headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
我们发现img的标签下面全都是preview的图片,这不是我们想要的图片url,因此我们必须要找到原图的url。
然而,原图的url不在这个html的里面,因此我们需要访问子连接,进入到例如https://www.sankakucomplex.com/post/show/7201242的网址中
2.BeautifulSoup4库的使用
import requests
from bs4 import BeautifulSoup
import re
url = "https://chan.sankakucomplex.com"
kv = {
'user-agent': 'Chrome/10.0'}
r = requests.get(url,headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,'html.parser') #用bs4库把r.text做成(一锅汤)
print(soup.prettify()) #完美的显示html
我们看到
span标签中保存着id =‘p7217638’的信息,因此我们想要把这个提取出来:以下提供两种思路。*一.提取id的信息,并把字符串中的’p’去除。*二.在a标签中提取出href key所对应的内容。
这是第一中方法的代码:
import re,requests
form bs4 in BeautifulSoup
url="https://chan.sankakucomplex.com"
kv = {
'user-agent': 'Chrome/10.0'}
r = requests.get(url,headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,'lxml')
p_list =[]
p_list2 =[]
for p in soup.find_all('span', 'thumb blacklisted', id=re.compile('p')): #可以使用正则表达式搜索
p_list.append(p['id']) #提取id信息,并用append方法把他添加到p_list列表中