flutter与python怎样结合?
flutter可以通过以下的方式实现结合:网页请求,网页内容解析,集合数据和保存数据库,
1、#!/usr/bin/python
# coding=utf-8
import platform
from selenium import webdriver
class BaseRequest:
def get_web_content(self, url):
#chromedriver = "C:Program Files (x86)GoogleChromeApplicationchromedriver.exe"
chromedriver = "/Users/zxl/Downloads/chromedriver"
sysstr = platform.system()
if sysstr == 'Darwin':
chromedriver = "/Users/zxl/Downloads/chromedriver"
elif sysstr == 'Windows':
chromedriver = "D:\my_github_workspace\chromedriver.exe"
elif sysstr == 'Linux':
chromedriver = "/Users/zxl/Downloads/chromedriver"
# 创建chrome参数对象
opt = webdriver.ChromeOptions()
# 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
opt.set_headless()
prefs = {"profile.managed_default_content_settings.images": 2}
opt.add_experimental_option("prefs", prefs)
# 创建chrome无界面对象
driver = webdriver.Chrome(executable_path=chromedriver, options=opt)
driver.get(url)
return driver
2、#!/usr/bin/python
# coding=utf-8
import datetime
import hashlib
import re
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
from com_zxl_spider_db.JokeDB import JokeDB
from com_zxl_spider_request.BaseRequest import *
from com_zxl_spider_data.JokeBean import *
class RequestQsbkTxt(BaseRequest):
def __init__(self):
global jokeDB
jokeDB = JokeDB()
def parse(self, end_url, index):
print "parse::end_url = ", end_url, "::index = ", index
driver = self.get_web_content("https://www.qiushibaike.com/" + end_url + str(index))
elem1 = WebDriverWait(driver, 10).until(
expected_conditions.presence_of_element_located((By.XPATH, '//ul[@]')))
print "elem1 = ", elem1
elem2 = WebDriverWait(driver, 10).until(
expected_conditions.presence_of_element_located((By.XPATH, '//div[@]')))
print "elem2 = ", elem2
# page_source = driver.page_source
isFindNextPage = False
paginationObject = driver.find_element_by_xpath('//ul[@]')
pageListObject = paginationObject.find_elements_by_xpath('.//li')
for pageItemObject in pageListObject:
page_index_txt = pageItemObject.text
print "pageItemObject::page_index_txt = ", page_index_txt
itemFindResult = re.findall(".*?(d+).*?", page_index_txt)
print "pageItemObject::itemFindResult = ", itemFindResult
if len(itemFindResult) > 0:
if int(itemFindResult[0]) > index:
index = int(itemFindResult[0])
isFindNextPage = True
break
# if index - int(itemFindResult[0]) == 1:
# index = int(itemFindResult[0])
# isFindNextPage = True
# break
print "parse::isFindNextPage = ", isFindNextPage, "::index = ", index, "::end_url = ",
hotPicJokeItemPath = '//div[@]'
hotPicJokeItems = driver.find_elements_by_xpath(hotPicJokeItemPath)
print 'hotPicJokeItems length = ', len(hotPicJokeItems)
for hotPicJokeItem in hotPicJokeItems:
jokeId = hotPicJokeItem.get_attribute('id')
md5Object = hashlib.md5()
md5Object.update(jokeId.encode('utf-8'))
jokeMd5Value = md5Object.hexdigest()
authorObject = hotPicJokeItem.find_element_by_xpath('.//div[@]')
authorNickObject = authorObject.find_element_by_xpath('.//h2')
authorNickName = authorNickObject.text
authorImgObject = authorObject.find_element_by_xpath('.//img')
authorImgUrl = authorImgObject.get_attribute('src')
authorGender = ''
authorAge = -1
try:
authorGenderObject = authorObject.find_element_by_xpath(".//div[starts-with(@class,'articleGender')]")
authorGender = authorGenderObject.get_attribute('class')
authorAge = authorGenderObject.text
except NoSuchElementException as e:
print e
contentObject = hotPicJokeItem.find_element_by_xpath('.//div[@]')
content = contentObject.text
thumbImgUrl = ''
try:
thumbObject = hotPicJokeItem.find_element_by_xpath('.//div[@]')
thumbImgObject = thumbObject.find_element_by_xpath('.//img')
thumbImgUrl = thumbImgObject.get_attribute('src')
except NoSuchElementException as e:
print e
statsVoteContent = ''
statsCommentContent = ''
statsCommentDetailUrl = ''
try:
statsObject = hotPicJokeItem.find_element_by_xpath('.//div[@]')
try:
statsVoteObject = statsObject.find_element_by_xpath('.//span[@]')
statsVoteContent = statsVoteObject.text
except NoSuchElementException as e:
print e
try:
statsCommentObject = statsObject.find_element_by_xpath('.//span[@]')
statsCommentContent = statsCommentObject.find_element_by_xpath(
'.//a[@]').text
statsCommentDetailUrl = statsCommentObject.find_element_by_xpath(
'.//a[@]').get_attribute('href')
except NoSuchElementException as e:
print e
except NoSuchElementException as e:
print e
# print authorNickName
# print authorGender
# print authorAge
# print authorImgUrl
# print content
# print thumbImgUrl
# print statsVoteContent
# print statsCommentContent
# print statsCommentDetailUrl
# print jokeId
# print jokeMd5Value
# print 'n'
# print '======================================end=========================================='
# print 'n'
joke_bean = JokeBean()
joke_bean = joke_bean.create_joke_bean(
authorNickName.encode('utf-8'),
authorGender,
authorAge,
authorImgUrl,
content.encode('utf-8'),
thumbImgUrl,
statsVoteContent,
statsCommentContent,
statsCommentDetailUrl,
jokeMd5Value)
isExistJokeItem = jokeDB.query_by_md5(jokeMd5Value)
print isExistJokeItem
if isExistJokeItem is None:
print "not ExistJokeItem"
jokeDB.insert_joke(joke_bean)
else:
print "ExistJokeItem"
driver.close()
return
print "==============end================="
print "n"
driver.close()
if not isFindNextPage:
return
else:
self.parse(end_url, index)
def clas_db(self):
if jokeDB is not None:
jokeDB.close_db()
def start_task(self):
print "start_task::", 'Now Time::', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
self.parse("pic/page/", 1)
self.clas_db()
if __name__ == "__main__":
request = RequestQsbkTxt()
# request.parse("pic/page/", 1)
request.parse("pic/page/", 1)
request.clas_db()
3、#!/usr/bin/python
# coding=utf-8
class JokeBean:
def create_joke_bean(self,
author_nick_name,
author_gender,
author_age,
author_img_url,
content,
thumb_img_url,
stats_vote_content,
stats_comment_content,
stats_comment_detail_url,
md5):
bean = {'author_nick_name': author_nick_name,
'author_gender': author_gender,
'author_age': author_age,
'author_img_url': author_img_url,
'content': content,
'thumb_img_url': thumb_img_url,
'stats_vote_content': stats_vote_content,
'stats_comment_content': stats_comment_content,
'stats_comment_detail_url': stats_comment_detail_url,
'md5': md5}
return bean。
- 1清新职场环境,招聘优秀保洁服务人员
- 2如何选择适合您的玉泉路搬家公司及联系方式
- 3奉贤商城专业保洁服务标准详解
- 4广西玉林邮政社会招聘面试?
- 5大连搬家服务全解析:选择适合您的搬家公司
- 6丰台区搬家服务推荐及联系方式
- 7快速找到厂洼搬家公司电话,轻松搬家无忧
- 8揭秘万寿路搬家公司电话,快速搬家从此不再烦恼
- 9丰台区搬家攻略:选择最适合你的搬家公司
- 10广州长途搬家服务:如何选择合适的搬家公司及其联系方式
- 11木樨地搬家服务全面指南:如何快速找到合适的搬家公司电话
- 12在宣武门找搬家公司?拨打这些电话轻松搬家!
- 13西二旗搬家服务全攻略:如何找到最靠谱的搬家公司电话
- 14临河搬家公司:专业服务助您轻松搬家
- 15选择异地搬家的物流公司,这几点必须考虑!
- 16可靠的十八里店搬家公司:联系电话与服务指南
- 17创造搬家新体验:大众搬家公司官网全揭秘
- 18武汉优质店铺保洁服务,让您的店面焕然一新
- 19青浦物业小区保洁服务的魅力与选择
- 20如何选择合适的保洁服务?美女保洁员的优势与魅力
- 21提升家政服务水平:普陀家政保洁服务培训解析
- 22提升均安诊所环境的保洁服务方案:健康与舒适双重保障
- 23银行保洁服务方案的标准与最佳实践
- 24提升清洁技能,在西藏寻找最佳保洁服务培训学校
- 25让生活更轻松:大型蓝领公寓保洁服务的优势与选择
- 26义乌商贸区保洁服务:为您的商务环境保驾护航
- 27全面解析绿色保洁服务的多种方法
- 28打造洁净空间:武昌大楼日常保洁服务全解析
- 29无锡到上海搬家公司电话推荐:靠谱服务一键直达
- 30辽宁2023年省考公告时间?