import requests
import os
import pymysql
import uuid
import re
from selenium import webdriver
from bs4 import BeautifulSoup
def getHeaders():
headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 125LA; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)',
}
return headers
def fillList(infos,i):
try:
infos['title']=i.find_element_by_xpath('./div[1]/div/div/a').text
infos['url']=i.find_element_by_xpath('./div[1]/div/div/a').get_attribute("href")
print('----',infos['url'])
#保存二级页面
resp_detail = requests.get(url=infos['url'],headers=getHeaders())
content_detail = resp_detail.content.decode('utf-8')
content=re.findall(r'<p>.*</p>',content_detail)
''.join(content)
content = re.sub(r'<img.*?>', '', content[0])
infos['html'] = content
#保存图片
img_url=i.find_element_by_xpath('./div[2]/a/img').get_attribute("src")
resp_img = requests.get(url=img_url)
content_img = resp_img.content
currentPathName = os.getcwd()
parentPathName = os.path.abspath(os.path.join(currentPathName, os.pardir))
folder_path = parentPathName + "/image" + "/"
if not os.path.exists(folder_path):
os.makedirs(folder_path)
img_name = str(uuid.uuid1()) + '.jpg'
filename = '%s%s' % (folder_path, img_name)
with open(filename, 'wb') as f:
f.write(content_img)
infos['img'] = img_name
print('提取信息成功')
except Exception as e:
print('提取信息失败')
return infos
def printInfo(infos, inf):
conn = pymysql.connect(host='localhost', port=3306, user='root',
passwd='root', db='jh_project01', charset='utf8')
cur = conn.cursor()
sqlc = '''
create table news(
id int primary key auto_increment,
title varchar(60),
img varchar(60),
url varchar(100),
html longtext)DEFAULT CHARSET=utf8;
'''
try:
cur.execute(sqlc)
conn.commit()
print("成功")
except:
print("错误")
for item, i in enumerate(inf):
# print(item,i.text)
if item == 7:
break
infos=fillList(infos, i)
sqla = '''
insert into news(title,img,url,html)
values(%s,%s,%s,%s);
'''
try:
cur.execute(sqla, (infos['title'], infos['img'], infos['url'], infos['html']))
conn.commit()
print("成功")
except:
print("失败")
conn.commit()
cur.close()
conn.close()
def main():
infos = {}
driver = webdriver.Chrome()
driver.get('https://www.toutiao.com/ch/news_tech/')
js = "var q=document.documentElement.scrollTop=500"
driver.execute_script(js)
inf = driver.find_elements_by_xpath('//div[@class="wcommonFeed"]/ul/li[@class="item "]/div[@class="item-inner y-box"]')
del inf[0]
print(inf)
# print(len(inf))
printInfo(infos,inf)
driver.close()
main()
webdriver
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近想总结一下学习selenium webdriver的情况,于是就想用seleniumwebdriver里面的方...
- webdriver 原理: 1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为w...
- 准备环境 对所有版本的webdriver:• Java JDK 5或以上(如果没有安装从oracle 的网站上...
- 接selenium webdriver基于Python系列文章 总结2 使用remote WebDriver之前...
- WebDriver 是一个庞大的工程。如果我们试着把所有的东西都放在一个单独的构建文件里,它最终会变得难于管理。我...