首先感谢热心回复,我们还是以一个实例来说明吧,
比如这个网址:https://dy.163.com/article/FISL2VNN0519DH2H.html
我需要将标题、正文原封不懂得爬取到本地数据库,图片替换为本地的数据
那么 我现在的代码是这样的:
[Python] 纯文本查看 复制代码 # -*- coding=utf-8 -*-
import requests
import bs4
import os
import datetime
import time
from urllib.request import urlopen
def fetchUrl(url):
'''
功能:访问 url 的网页,获取网页内容并返回
参数:目标网页的 url
返回:目标网页的 html 内容
'''
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
r = requests.get(url,headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
def get_article_content():
data_list = []
pic_id = 0
url = "https://dy.163.com/article/FISL2VNN0519DH2H.html"
html = fetchUrl(url)
# print(html)
time.sleep(3)
bsobj = bs4.BeautifulSoup(html,'html.parser')
title = bsobj.find('div', attrs = {'class': 'article_title'}).find('h2').text # 标题
pList = bsobj.find('div', attrs = {'id': 'content'}).find_all('p') # 正文
imgList = bsobj.find('div', attrs = {'id': 'content'}).find_all('img') #所有图片
content = ''
pic_urls = ''
for p in pList:
content += p.text + '\n'
for img in imgList:
pic_url = img['src']
pic_name = './pic_'+str(pic_id)+'.jpg'
with open(pic_name, 'wb') as down_url: # 二进制创建并写入文件
down_url.write(requests.get(pic_url).content) # 写出请求得到的img资源
time.sleep(3)
pic_urls += pic_name + '\n'
pic_id += 1
content += pic_urls #我现在是把图片全部都放到了正文后面 如何保持和原文章一致呢?
print(title,content)
if __name__ == '__main__':
get_article_content()
现在图片我是放到了文章内容的最后面,如何让图片保持和原文原有的位置呢?
|