求解决方案!
想爬取立创商城元器件的价格,以下是源代码,python版本为3.10,pycharm的版本为2022.2.4
import requests
from lxml import etree
url = 'https://so.szlcsc.com/global.html?k=%25E7%2594%25B5%25E9%2598%25BB&hot-key=ADXL355BEZ-RL7'
headers = {
# 防盗链
'referer': 'https://so.szlcsc.com/',
# 浏览器信息
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 '
'Safari/537.36 '
}
resp = requests.get(url, headers=headers)
tree = etree.HTML(resp.text)
names = tree.xpath('//*[@id="shop-list"]/table/tbody/tr[1]/td/div[2]/div[2]/div[3]/div[1]/div[1]/ul/li[2]/div/p/@originalprice')
print(names)
for item in names:
print(item)
执行代码之后获取的数据应该是4.72,但是输出结果为空
url = 'https://so.szlcsc.com/global.html?k=3296W-1-103LF&hot-key=ADXL355BEZ-RL7'
headers = {
# 防盗链
'referer': 'https://so.szlcsc.com/',
# 浏览器信息
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 '
'Safari/537.36 '
}
resp = requests.get(url, headers=headers)
tree = etree.HTML(resp.text)
names = tree.xpath('//*[@id="shop-list"]/table/tbody/tr[1]/td/div[2]/div[2]/div[1]/div/ul/li[1]/span[2]/@title')
print(names)
for item in names:
print(item)
from selenium import webdriver
from lxml import etree
driver = webdriver.Edge()
url='https://so.szlcsc.com/global.html?k=%25E7%2594%25B5%25E9%2598%25BB&hot-key=ADXL355BEZ-RL7'
driver.get(url)
html=etree.HTML(driver.page_source)
dd=html.xpath('//@originalprice')
print(dd)
网页中分静态页面与动态页面,多数页面是动静结合的,一般是先加载静态页面,然后通过异步的方式填充数据
selenium
框架去爬取数据
from selenium import webdriver
from lxml import etree
driver = webdriver.Edge()
url='https://so.szlcsc.com/global.html?k=%25E7%2594%25B5%25E9%2598%25BB&hot-key=ADXL355BEZ-RL7'
driver.get(url)
html=etree.HTML(driver.page_source)
prices=html.xpath('//@originalprice')
for item in prices:
print(item)
不知道你这个问题是否已经解决, 如果还没有解决的话:if ((player == 1 and computer == 2) or
(player == 2 and computer == 3) or
(player == 3 and computer == 1)):
print(“噢耶!!!电脑弱爆了!!!”)
elif player == computer: print(“心有灵犀,再来一盘!”)
else:
print(“不行,我要和你决战到天亮!”)
5.2 随机数的处理
在 Python 中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”
import random
导入模块后,可以直接在 模块名称 后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数
random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b
例如:
random.randint(12, 20) # 生成的随机数n: 12 <= n <= 20
random.randint(20, 20) # 结果永远是 20
random.randint(20, 10) # 该语句是错误的,下限必须小于上限
运算符
目标
算数运算符
比较(关系)运算符
逻辑运算符
赋值运算符
运算符的优先级
数学符号表链接: https://zh.wikipedia.org/wiki/数学符号表
在 Python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果
In [1]: “-” * 50
Out[1]: ‘----------------------------------------’
02. 比较(关系)运算符
运算符描述==检查两个操作数的值是否 相等 ,如果是,则条件成立,返回 True!=检查两个操作数的值是否 不相等 ,如果是,则条件成立,返回 True>检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True<检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True>=检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True<=检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True
Python 2.x 中判断 不等于 还可以使用 <> 运算符
!= 在 Python 2.x 中同样可以用来判断 不等于
逻辑运算符
运算符逻辑表达式描述andx and y只有 x 和 y 的值都为 True,才会返回 True
否则只要 x 或者 y 有一个值为 False,就返回 Falseorx or y只要 x 或者 y 有一个值为 True,就返回 True
只有 x 和 y 的值都为 False,才会返回 Falsenotnot x如果 x 为 True,返回 False
如果 x 为 False,返回 True
赋值运算符
在 Python 中,使用 = 可以给变量赋值
在算术运算时,为了简化代码的编写, Python 还提供了一系列的 与 算术运算符 对应的 赋值运算符
注意: 赋值运算符中间不能使用空格
运算符描述实例=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c+=加法赋值运算符c += a 等效于 c = c + a-=减法赋值运算符c -= a 等效于 c = c - a*=乘法赋值运算符c = a 等效于 c = c * a/=除法赋值运算符c /= a 等效于 c = c / a//=取整除赋值运算符c //= a 等效于 c = c // a%=取 模 (余数)赋值运算符c %= a 等效于 c = c % a*=幂赋值运算符c **= a 等效于 c = c ** a
运算符的优先级
以下表格的算数优先级由高到最低顺序排列
运算符描述**幂 (最高优先级)* / % //乘、除、取余数、取整除+ -加法、减法<= < > >=比较运算符== !=等于运算符= %= /= //= -= += *= **=赋值运算符not or and逻辑运算符
循环
目标
程序的三大流程
while 循环基本使用
break 和 continue
while 循环嵌套