A. python爬虫这样子为什么一直爬的是相同的东西,应该怎么爬取其他td标签下的内容
importrequests
frombs4importBeautifulSoup
importre
headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/49.0.2623.221Safari/537.36SE2.XMetaSr1.0'}
ALL=[]
defget_url(s):
url='https://hr.tencent.com/position.php?keywirds=测试&tid=0&start=%s#a'%s
req=requests.get(url,headers=headers,timeout=3)
res=req.content
soup=BeautifulSoup(res,'lxml')
s=soup.select('table.tablelisttr')
Text=s[1:-1]
foriinText:
job={'职位名称':None,
'职位类别':None,
'人数':None,
'地点':None,
'发布时间':None}
L=i.text.strip('').split('')
job['职位名称']=L[0]
job['职位类别']=L[1]
job['人数']=L[2]
job['地点']=L[3]
job['发布时间']=L[4]
ALL.append(job)
foriinrange(0,101,10):
get_url(i)
print(ALL)
你的问题应该是字段key的问题,key是唯一的。多个结果的话会覆盖,加个list来表达就可以规避这个问题
B. 求助,怎么利用Python爬取贴吧帖子楼中楼的
楼中楼里面没办法看原贴,不过我可以教你一个办法,你可以在楼中楼里回复一下,再从你的回复贴里面找原贴就行了。
C. Python 有哪些入门学习方法和值得推荐的经典教材
如果你有一定的计算机编程知识基础,那么很容易学;再如果你对编程十分感兴趣,那么很容易学的。
1,找到合适的入门书籍,大致读一次,循环啊判断啊,常用类啊,搞懂(太难的跳过)
2,做些简单习题,字符串比较,读取日期之类PythonCookbook不错(太难太无趣的,再次跳过,保持兴趣是最重要的,不会的以后可以再学)
3,加入Python讨论群,态度友好笑眯眯(很重要,这样高手才会耐心纠正你错误常识)。很多小问题,纠结许久,对方一句话点播思路,真的节约你很多时间。耐心指教我的好人,超级超级多谢。
4,解决自己电脑问题。比如下载美剧,零散下载了2,4,5,8集,而美剧共12集,怎样找出漏下的那几集?然后问题分解,1读取全部下载文件名,2提取集的数字,3数字排序和(1--12)对比,找出漏下的。
5,时刻记住目的,不是为了当程序员,是为了解决问题。比如,想偷懒抓网页内容,用urllib不行,用request也不行,才发现抓取内容涉及那么多方面(cookie,header,SSL,url,javascript等等),当然可以听人家劝,回去好好读书,从头读。或者,不求效率,只求解决,用ie打开网页再另存为行不行?ie已经渲染过全部结果了。问题变成:1--打开指定的10个网页(一行代码就行)。更复杂的想保存呢?利用已经存在的包,比如PAM30(我的是Python3),直接打开ie,用函数outHTML另存为文本,再用搜索函数(str搜索也行,re正则也行)找到数据。简单吧?而且代码超级短。
6,保持兴趣,用最简单的方式解决问题,什么底层驱动,各种交换,留给大牛去写吧。我们利用已经有的包完成。
7,耐心读文档,并且练习快速读文档。拿到新包,找到自己所需要的函数,是需要快速读一次的。这个不难,读函数名,大概能猜到是干嘛的,然后看看返回值,能判断是不是自己需要的。
8,写帮助文件和学习笔记,并发布共享。教别人的时候,其实你已经自己再次思考一次了。我觉得学程序就像学英文,把高频率的词(循环,判断,常用包,常用函数)搞懂,就能拼装成自己想要的软件。一定要保持兴趣,太复杂的跳过,就像小学数学,小学英语,都是由简入深。网络很平面,无数国际大牛着作好书,关于Python,算法,电脑,网络,或者程序员思路,或者商业思维(浪潮之巅是本好书)等等,还有国际名校的网络公开课(中英文字幕翻译完毕,观看不是难事),讲计算机,网络,安全,或者安卓系统,什么都有,只要能持续保持兴趣,一点点学习下去,不是难事。所有天才程序员,都曾是儿童,回到儿童思维来理解和学习。觉得什么有趣,先学,不懂的,先放着,遇到问题再来学,效果更好。唯一建议是,不要太贪心,耐心学好一门优雅的语言,再学其它。虽然Javascript做特效很炫,或提某问题时,有大牛建议,用Ruby来写更好之类,不要改方向。就像老笑话:“要学习递归,必须首先理解递归。”然后死循环一直下去。坚持学好一门语言,再研究其他。即使一门语言,跟网络,数据库等等相关的部分,若都能学好,再学其他语言,是很快的事情。另外就是,用学英文的耐心来学计算机,英文遇到不懂的词,抄下,查询。python里,看到Http,查查定义,看到outHtml,查查定义,跟初学英语时候一样,不要直接猜意思,因为精确描述性定义,跟含糊自然语有区别的。而新人瞎猜,很容易错误理解,wiki,google很有用。
对于python初学者来说,能找到一个好老师学习格外重要,这能决定你是不是可以做出好的项目,在python开发的路上越走越轻松,如果现在的你缺乏学习经验,找不到老师指导你学习,可以加企鹅扣-Q前面112再加上中间的983以及最后四位数4903,连在一起就可以了。
如果说汇编是第一代编程语言,那么C和C++是第二代编程语言,C#和Java等等是第三代编程语言,Python和其他类似的脚本语言就是第四代编程语言(除汇编外这些语言都是C语系下的编程语言,可以进行类比),从C++开始是个分水岭,它是通过面向对象和对底层技术的封装,使编程向高级编程过度,到Python已经是很简历通俗了,至少是跟之前比,所以如果说python不易学,那其他语言怎么办呢,几乎每本python的教材都会先表明python是一门易学易用的语言,这也是这个语言被创造出来的宗旨之一,另外Google的程序猿很喜欢用Python编写各类工具,因为它的语言简历,编码效率高,让用惯了其他语言的人,乐意去用这门新的语言,也说明它的易学性。
另外从广义讲,Python不仅是一门编程语言,还是一个编程的平台,在这个平台下,有着安装各种扩展、框架的工具pip,有着打包工具setuptools等等等等,这些工具已经很成熟,而且易于上手,另外Python有很多很好的编程工具(集成开发环境)可以用,如PyCharm等,这也使的新人很容易上手,不像其他不成熟的编程语言工具贫乏,编写和运行程序如连电路板一般。
D. python中tid表示什么
tid表示一个接入的终端。根据查询相关公开信息显示TID表示一个接入的终端如一个移动用户、或一个放音资源等,在软交换中如基于TDM传输的,TID与CIC一一对应。Python由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。
E. python用print输不出结果,怎么回事啊
input接收的变量是字符型,两个字符型无法相乘,需要类型转换。
print(int(x)*int(y))
F. 大佬求教,哪里错了啊(Python3)
可以正常运行的代码
importrandom
classClasses:
def__init__(self,class_name):
self.class_name=class_name
self.students=[]
defadd_student(self,student):
self.students.append(student)
classPerson:
def__init__(self,name):
self.name=name
classTeacher(Person):
def__init__(self,name,tid):
super().__init__(name)
self.tid=tid
defteaching(self,classes):
print('%s老师在给%s班上同学上课'%(self.name,classes.class_name))
foriinrange(len(classes.students)):
classes.students[i].learn_start()
defset_grade(self,classes):
print('%s老师在打分'%self.name)
foriinrange(len(classes.students)):
ifclasses.students[i].state==1:
classes.students[i].set_score(100)
elifclasses.students[i].state==2:
classes.students[i].set_score(60)
else:
classes.students[i].set_score(0)
classStudent(Person):
def__init__(self,name,sid):
super().__init__(name)
self.sid=sid
deflearn_start(self):
self.state=random.randint(1,4)
ifself.state==1:
print('%s在学习!'%self.name)
elifself.state==2:
print('%s在开小差~'%self.name)
else:
print('%s逃课了~'%self.name)
defset_score(self,score):
self.score=score
print('%s的成绩是%d'%(self.name,self.score))
c1=Classes('网络1701')
s1=Student('张三','01')
s2=Student('李四','02')
s3=Student('王五','03')
c1.add_student(s1)
c1.add_student(s2)
c1.add_student(s3)
t1=Teacher('老六','001')
t1.teaching(c1)
t1.set_grade(c1)
运行结果
老六老师在给网络1701班上同学上课
张三在开小差~
李四逃课了~
王五在开小差~
老六老师在打分
张三的成绩是60
李四的成绩是0
王五的成绩是60
G. python爬虫时,bs4无法读取网页标签中的文本
刚看了下虎扑的帖子。帖子的浏览量是动态加载的。并不是静态页面。所以常规的爬虫爬取的内容是空的。目前我了解的有两种方法可以去获取浏览量。一种是使用selenium + chrome。模拟浏览器加载。这种对于动态加载的页面比较有效。缺点就是效率太低。虎扑的帖子不建议使用(用不上)。另外一种就是找到虎扑获取浏览量的请求链接。看截图:
希望可以帮到你,如有问题可以继续追问。谢谢
H. python request问题
这个很容易实现,打开开发者工具,查看requests里面的信息,得到具体的查询参数
比如你上面的tid就是一个参数,然后把这些参数做成一个字典,在使用urlencode这个方法将参数字典转换成url格式
像下面这样:
url=‘www..com’+urlencode(dict)
把这个irl传入request即可
先导入二个包
第一from docxtpl import DocxTemplate 这个用来创建字典
第二from urllib.parse import urlencode
I. python 合并两个json文件
先用json.load解析各自的文件内容,
然后用第一个接触出来的的列表,extend方法第二个列表,然后两个列表就合二为一了。