老师你好,我想暗搓搓地问一个不是本节课的知识点,就是VScode怎么设置可以使得输入main可以提示if __name__ == "__main__",我pycharm可以提示但是VScode不行。
找不到错误,就是无法修改图片名称
bizhi.zip
老师,你好!对于在谷歌浏览器上安装扩展程序,我的电脑出现下面情况,不知道怎么解决,试过卸载浏览器重新下载,还是不行
webdriver中的这些参数都是干什么的? 具体什么情况 下需要使用那些???
讲的有点少了吧? 爬取视频的方法呢?有些网站的视频链接不是很明显的,那应该怎么操作呢?这就是讲了最基本的爬取明显的网站的东西吧?
这边的课上的笔记怎么没有了呢。。。???
from fake_useragent import UserAgent import requests from lxml import etree #解析库 def get_html(url): ''' param url:要爬取的地址 return:返回html ''' headers={"User-Agent":UserAgent().chrome} resp=requests.get(url,headers=headers) #发送请求 if resp.status_code ==200: resp.encoding='utf-8' #设置字符集 return resp.text else: return None def parse_list(html): ''' param url:传递进来一个有电影列表的html return:返回一个电影列表的url ''' # if html: #html在有值的情况下在做解析 e=etree.HTML(html) list_url=['http://maoyan.com{}'.format(url) for url in e.xpath('//div[@class="movie-item-hover"]/a/@href')] return list_url def pares_index(html): ''' param url:传递进来一个有电影具体信息的html return:提取好的电影具体信息 ''' e = etree.HTML(html) name = e.xpath('//h1[@class="name"]/text()') type = e.xpath('//li[@class="ellipsis"][1]/a/text()') content = e.xpath('//span[@class="dra"]/text()') return {"name":name,"type":type,"content":content} # actors=e.xpath('') # actors=format_data(actors) # 有重复的演员名字,需要去重 # def format_data(actors): # actor_set=set() # for actor in actors: # actor_set.add(actor.strip()) #strip去空格 # return actor_set def main(): '''控制上述方法的实施,分配相应的url''' num = int(input('请输入多少页:')) for page in range(num): url="https://maoyan.com/films?showType=1&offset={}".format(page*30) list_html=get_html(url) #发送请求 list_url=parse_list(list_html) #解析list_html,返回list_url每个电影的信息 for url in list_url: info_html=get_html(url) movie = pares_index(info_html) print(movie) if __name__ =='__main__': main()
老师,这个代码只运行到请输入多少页,然后就运行结束了。哪里出错了?
老师,为什么用F12看返回的是中文,用requests返回的是英文
import requests from fake_useragent import UserAgent url = "https://wmswxtest.saikul.com/sk-ep/oauth/token" headers = {"User-Agent":UserAgent().random} data = { "scope": "select", "grant_type": "password", "username": "ceshi", "password": "6666", "client_id": "client_2", "client_secret": "6666"} resp = requests.post(url,headers=headers,data=data) resp.encoding = "utf-8" print(resp.text)
不知道老师,有没有解决验证的好办法,分享一下
提交了一下代码,老师您看一下
from urllib.request import Request,urlopen from fake_useragent import UserAgent from urllib.parse import urlencode url = "http://dhwy-test.saikul.com/dhwy/auth/login" headers = {"User-Agent":UserAgent().random} data = {"username":"test","password":"789"} requ = Request(url,headers=headers,data=urlencode(data).encode()) resp = urlopen(requ) print(resp.read().decode())
老师帮忙看下这个报错问题,我查了下百度尝试在headers中加
"Content-type":"application/json;charset=utf-8" 然后直接报错400
老师,我给大家避个雷,我今天按照老师的代码一直测试,一直报错:No module named 'scrapy.contrib'卸载安装了这个模块都不行!最后只是将settings里面
ITEM_PIPELINES = { : }
修改成
我真是找了N长时间,我以为是python解释器出问题了,而是scrapy-1.6.0已删除scrapy.contrib耽误了居多时间在这里
老师,这里这个__index__与初始化方法__init__有什么不同呢。我网上找了资料发现关于这个的很少。所以请教您一下
from fake_useragent import UserAgent import re import requests from bs4 import BeautifulSoup from time import sleep def get_html(url): ''' :param url: 要爬取的地址 :return: 返回html ''' headers = {"User_Agent": UserAgent().random} resp = requests.get(url,headers=headers) #status_code 返回状态码 if resp.status_code == 200: resp.encoding='utf-8' return resp.text else: return None def parse_list(html): ''' :param html: 传递进来有一个电影列表的的html :return: 返回一个电影的url ''' soup = BeautifulSoup(html,'lxml') a_list = soup.select(".book-img-box > a") list_url = [] for a in a_list: list_url.append(a.get('href')) # 解决验证CA # ssl._create_default_https_context = ssl._create_unverified_context list_url = ['https:{}'.format(url)for url in list_url] return list_url def parse_index(html): ''' :param html: 传递一个有电影信息的html :return: 已经提取好的电影信息 ''' soup = BeautifulSoup(html,'lxml') name = soup.find('h1','em') book = soup.find_all("a", class_="writer")[0].text return {'作者':name,'书名':book} def main(): num = int(input("请输入要获取多少页:")) for page in range(num): url = 'https://www.qidian.com/all?&page={}'.format(page+1) list_html = get_html(url) list_url = parse_list(list_html) for url in list_url: info_html = get_html(url) move = parse_index(info_html) print(move) if __name__ == '__main__': main()
老师,我这个匹配到h1下面的em标签啊,我网上也查了,也用calss匹配过。最后返回要么空,要么是错误的。
from fake_useragent import UserAgent import ssl import requests from lxml import etree from time import sleep def get_html(url): ''' :param url: 要爬取的地址 :return: 返回html ''' headers = {"User_Agent": UserAgent().random} resp = requests.get(url,headers=headers) #status_code 返回状态码 if resp.status_code == 200: resp.encoding='utf-8' return resp.text else: return None def parse_list(html): ''' :param html: 传递进来有一个电影列表的的html :return: 返回一个电影的url ''' e = etree.HTML(html) # 解决验证CA # ssl._create_default_https_context = ssl._create_unverified_context list_url = ['https://www.qidian.com{}'.format(url)for url in e.xpath('//div[@class="book-img-box"]/a/@href')] return list_url def parse_index(html): ''' :param html: 传递一个有电影信息的html :return: 已经提取好的电影信息 ''' e = etree.HTML(html) name = e.xpath('//div/h1/span/a/text()') return name def main(): num = int(input("请输入要获取多少页:")) for page in range(num): url = 'https://www.qidian.com/all?&page={}'.format(page+1) list_html = get_html(url) list_url = parse_list(list_html) for url in list_url: info_html = get_html(url) move = parse_index(info_html) print(move) if __name__ == '__main__': main()
老师,您帮我看一下,为什么我这个最后返回的是空列表啊,我debug看了一下是这个出问题了。返回了空值,但是我使用插件看了看没问题啊
name = e.xpath('//div/h1/span/a/text()')
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637