Python爬虫爬取豆瓣电影

Python新手,最近学习Python做了一个爬取豆瓣电影的小项目,在爬取导演、主演的时候结果不是理想,请问分别爬取导演、主演的程序怎么写?
下面是网页的程序:



导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins /...

1994 / 美国 / 犯罪 剧情

3个回答

可以用xpath,浏览器f12开发模式,定位到你要的地方,然后右键→复制xpath路径,就可以了

最快的话是用xpath,慢一点的话用beautifulsoup,难一点的话用正则表达式去匹配

使用xpath找到你目标标签,获取标签内的信息

choven_meng
choven_meng xpath('div[@class="bd"]/p/text()')可以获得全部的内容,但是想要把导演和演员分别爬取怎么弄?难道是text=“”导演“??”
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何用python编写爬虫,爬取谷歌学术镜像网站论文的参考文献数据?
以某篇论文搜索结果为例,[论文链接](https://cc.glgoo.top/scholar?cites=4177867987374784226&as_sdt=2005&sciodt=0,5&hl=zh-CN "") 对该链接搜索结果中的论文,点击下方引号(引用),对于出来的参考文献格式如何用python爬虫爬取?
python 爬虫,爬取google搜索结果,爬一段时间就被噤掉了,怎么破?
已经进行了一些伪装,但是还是不够,希望有经验的哥们给个指点 def google_search(keyword,page): proxy_handler1 = urllib2.ProxyHandler({"https":"https://..........1:8080"}) proxy_handler2 = urllib2.ProxyHandler({"https":"https://..........2:8080"}) proxys = [proxy_handler1,proxy_handler2] proxy_choice = random.randint(0, 1) proxy_handler = proxys[proxy_choice] cookie_handler = urllib2.HTTPCookieProcessor(cookielib.CookieJar()) opener = urllib2.build_opener(proxy_handler, cookie_handler, urllib2.HTTPHandler) urllib2.install_opener(opener) user_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+ \ (KHTML, like Gecko) Element Browser 5.0', 'IBM WebExplorer /v0.94', 'Galaxy/1.0 [en] (Mac OS X 10.5.6; U; en)', 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)', 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14', 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) \ Version/6.0 Mobile/10A5355d Safari/8536.25', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) \ Chrome/28.0.1468.0 Safari/537.36', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; TheWorld)'] index = random.randint(0,9) user_agent = user_agents[index] headers = { "User-Agent":user_agent, #"Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0", "Referer":"https://www.google.com", "Host":"www.google.com", "Connection":"keep-alive", "Accept-Language":"en-US,en;q=0.5", #"Accept-Encoding":"gzip, deflate", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" } url = 'https://www.google.com' + GOOGLE_POSTFIX + '/search?' values = { 'q':keyword, 'start':page*10, 'hl':'en' } data = urllib.urlencode(values) req = urllib2.Request(url+data, headers=headers) html = '' try: rsp = urllib2.urlopen(req) html = rsp.read() except urllib2.HTTPError, e: print 'The server couldn\'t fulfill the request.' print 'Error code: ', e.code except urllib2.URLError, e: print 'We failed to reach a server.' print 'Reason: ', e.reason except ssl.SSLError,e: print 'The read opertaion timed out' except Exception,e: print Exception,e else: pass return html
python爬虫,遇到403 forbidden,求助。
``` # -*- coding: utf-8 -*- import re import sys import requests reload(sys) sys.setdefaultencoding("utf-8") if __name__ == '__main__': url = 'https://movie.douban.com/subject/1433330/photos?type=W' # 获取网页源码 html = requests.get(url) # 抓每个图片链接 pic_url = re.findall('<img src="https://(.*?)" />', html.text, re.S) #此链接为预览链接 i = 0 for each in pic_url: raw = re.sub('thumb','raw',each,re.S) //将预览链接中的thumb替换成raw,便成了高清图片链接 print 'now download..'+'https://'+raw pic = requests.get('https://'+raw) f = open('hp\\'+str(i)+'.jpg','wb') f.write(pic.content) f.close() i += 1 ``` 刚开始学爬虫,爬豆瓣电影的壁纸练手。现在程序可以跑下来,不返回错,但是下载的图片是失败的,response 返回 403 forbidden。 我这样想问题的原因对吗? **因为我想下高清的,但是豆瓣查看高清壁纸前,需要登录,但我的程序是没有登录的,所以出现403是吗?所以我得模拟登陆是吗?** 刚注册,木有悬赏币。。谢谢
Python爬虫soup.findAll("li", {"class": "result"})为空
``` 大家好~ 我之前写的爬虫是单独针对某个页面的,比如新浪微博。这次需要在全网范围查询关于“开灯”有关的句子或文章,但是soup.findall("li",{"class":"result"})的结果一直是空。求助,谢谢。 PS:网上参考其他的例子,也都是在这个地方出问题,空的。。。 代码如下: #-*-coding:utf-8-*- __author__ = 'Daniel' #python3.5 #'爬取关于开灯的新闻' import re import urllib import chardet from bs4 import BeautifulSoup def remove_js_css(content): r = re.compile(r'''<scrip.*?</scrip>''', re.I|re.M|re.S) s = r.sub('', content) r = re.compile(r'''<style.*?</style>''', re.I|re.M|re.S) s = r.sub('', s) r = re.compile(r'''<!--.*?-->''', re.I|re.M|re.S) s = r.sub('', s) r = re.compile(r'''<meta.*?>''', re.I|re.M|re.S) s = r.sub('', s) r = re.compile(r'''<ins.*?</ins>''', re.I|re.M|re.S) s = r.sub('', s) return s def remove_empty_line(content): r = re.compile(r'''^\s+$''', re.M|re.S) s = r.sub('', content) r = re.compile(r'''\n+''', re.M|re.S) s = r.sub('\n', s) return s def remove_any_tag(s): s = re.sub(r'''<[^>]+>''', '', s) return s.strip() def remove_any_tag_but_a(s): text = re.findall(r'''<a[^r][^>]*>(.*?)</a>''', s, re.I|re.S|re.S) text_b = remove_any_tag(s) return len(''.join(text)), len(text_b) def remove_image(s, n=50): image = 'a' * n r = re.compile(r'''<img.*?>''', re.I|re.M|re.S) s = r.sub(image, s) return s def remove_video(s, n=1000): video = 'a' * n r = re.compile(r'''<embed.*?>''', re.I|re.M|re.S) s = r.sub(video, s) return s def sum_max(values): cur_max = values[0] glo_max = -99999 left, right = 0, 0 for index, value in enumerate(values): cur_max += value if(cur_max > glo_max): glo_max = cur_max right = index elif(cur_max < 0): cur_max = 0 for i in range(right, -1, -1): glo_max -= values[i] if abs(glo_max < 0.0001): left = i break return left, right + 1 def method_1(content, k = 1): if not content: return None, None, None, None tmp = content.split('\n') group_value = [] for i in range(0, len(tmp), k): group = '\n'.join(tmp[i:i+k]) group = remove_image(group) group = remove_video(group) text_a, text_b = remove_any_tag_but_a(group) temp = (text_b - text_a) - 8 group_value.append(tmp) left, right = sum_max(group_value) return left, right, len('\n'.join(tmp[:left])), len('\n'.join(tmp[:right])) def extract(content): content = remove_empty_line(remove_js_css(content)) left, right, x, y = method_1(content) return '\n'.join(content.split('\n')[left:right]) #输入url,将其新闻页的正文输入txt def extract_news_content(web_url, file_name): request = urllib.Request(web_url) #在请求加上头信息,伪装成浏览器访问 request.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6') opener = urllib.build_opener() html = opener.open(request).read() infoencode = chardet.detect(html)['encoding']##通过第3方模块来自动提取网页的编码 if html != None and infoencode != None:#提取内容不为空,error.或者用else html = html.decode(infoencode, 'ignore') soup = BeautifulSoup(html) content = soup.renderContents() content_text = extract(content)#提取新闻网页中的正文部分,化为无换行的一段文字 content_text = re.sub("&nbsp;"," ",content_text) content_text = re.sub("&gt;","",content_text) content_text = re.sub("&quot;",'""',content_text) content_text = re.sub("<[^>]+>","",content_text) content_text = re.sub("\n","",content_text) file = open(file_name,'a')#append file.write(content_text) file.close() #抓取百度新闻搜索结果:中文搜索,前10页,url:key=关键词 def search(key_word): search_url = 'http://news.baidu.com/ns?word=key_word&tn=news&from=news&cl=2&rn=20&ct=1' req = urllib.request.urlopen(search_url.replace('key_word', key_word)) real_visited = 0 for count in range(10):#前10页 html = req.read() soup = BeautifulSoup(html) content = soup.findAll("li", {"class": "result"}) #resultset object num = len(content) for i in range(num): #先解析出来所有新闻的标题、来源、时间、url p_str = content[i].find('a') #if no result then nontype object contenttitle = p_str.renderContents() contenttitle = contenttitle.decode('utf-8', 'ignore')#need it contenttitle = re.sub("<[^>]+>", "", contenttitle) contentlink = str(p_str.get("href")) #存放顺利抓取的url,对比 visited_url = open(r'visited-cn.txt', 'r')#是否已经爬过 visited_url_list = visited_url.readlines() visited_url.close()#及时close exist = 0 for item in visited_url_list: if contentlink == item: exist = 1 if exist != 1:#如果未被访问url p_str2 = content[i].find('p').renderContents() contentauthor = p_str2[:p_str2.find("&nbsp;&nbsp")]#来源 contentauthor = contentauthor.decode('utf-8', 'ignore')#时 contenttime = p_str2[p_str2.find("&nbsp;&nbsp") + len("&nbsp;&nbsp") + 1:] contenttime = contenttime.decode('utf-8', 'ignore') #第i篇新闻,filename="D:\\Python27\\newscn\\%d.txt"%(i) #file = open(filename,'w'),一个txt一篇新闻 real_visited += 1 file_name = r"newscn\%d.txt"%(real_visited) file = open(file_name,'w') file.write(contenttitle.encode('utf-8')) file.write(u'\n') file.write(contentauthor.encode('utf-8')) file.write(u'\n') file.write(contenttime.encode('utf-8')) file.write(u'\n'+contentlink+u'\n') file.close() extract_news_content(contentlink, file_name)#还写入文件 visited_url_list.append(contentlink)#访问之 visited_url = open(r'visited-cn.txt', 'a')#标记为已访问,永久存防止程序停止后丢失 visited_url.write(contentlink+u'\n') visited_url.close() if len(visited_url_list) >= 120: break #解析下一页 if count == 0: next_num = 0 else: next_num = 1 next_page = 'http://news.baidu.com' + soup('a',{'href':True,'class':'n'})[next_num]['href'] # search for the next page#翻页 print(next_page) req = urllib.urlopen(next_page) if __name__=='__main__': #key_word = input('input key word:') key_word = 'helloworld' search(key_word) ```
python怎么爬虫豆瓣的短评得分
![图片说明](https://img-ask.csdn.net/upload/201812/01/1543607654_228165.png) 该如何爬去如图所示class的名字呢?(就是每条短评的评分) comment_soup.find_all('span', class_='comment-info')返回的都是none
关于python爬虫利用正则表达式爬取不到内容的问题
我在用正则表达式爬取豆瓣电影里面的电影演员信息。 网页演员信息的位置如下: ![图片说明](https://img-ask.csdn.net/upload/201910/18/1571357394_33738.png) 那么要爬取其中的这些演员名不就是下面的代码吗? ```python actors = re.findall(r'<div class="meta abstract_2">(.*?)</div>', resp, re.DOTALL) ``` 其中resp是前面获取到的网页代码 可是print(actors)输出结果为空,请问是哪里不对呀? 有没有大佬就用正则表达式帮忙解答一下?因为我用爬虫只会用正则表达式匹配。
python3爬虫遇到报错 “urlopen error no host given”
程序是爬百度图片搜索范冰冰的所有图片。Notepad已经选择了UTF8编码,URL地址也没有回车分行。 直接上代码如下: import urllib.request import re import sys import os import urllib import ssl #根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 def getHtml(url): page = urllib.request.urlopen(url) html = page.read() return html.decode('utf-8') def getImg(html): imglist = re.findall('"ObjURL":"(.*?)",', html, re.S)#表示在整个网页中过滤出所有图片的地址,放在imglist中 x = 0 path = 'D:\\test' # 将图片保存到D:\\test文件夹中,如果没有test文件夹则创建 if not os.path.isdir(path): os.makedirs(path) paths = path+'\\' #保存在test路径下 for imgurl in imglist: urllib.request.urlretrieve(imgurl,'D:\\test\\%s.jpg' % x) #打开imglist中保存的图片网址,并下载图片保存在本地,format格式化字符串 x = x + 1 return imglist url="http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E8%8C%83%E5%86%B0%E5%86%B0" html=getHtml(url) print (getImg(html)) #从网页源代码中分析并下载保存图片
python写的爬虫怎么放在微信小程序的环境下运行(或者说怎么在微信小程序写爬虫)?
本人大四,现在正在准备毕业设计,不想做一般的web项目(所有人都在做没有什么新意),思来想去最后决定用python写个爬虫(这个是毕设的核心功能),然后想联系当下的较流行的微信小程序,把爬虫放到微信小程序上进行运行(曾在网上看到一位大神在小程序上爬豆瓣的妹子图,感觉和我想要的差不多)。大致的流程基本是这样的。所以想大佬们指导一下小弟,怎么在小程序上实现爬虫?
求大神解决python爬取淘宝信息的问题
正在学习mooc里的python爬虫课程,在编写课程里的实例遇到了一些问题。 以下代码想要得到淘宝商品搜索页面中宝贝标题和价格的列表,按照视频上老师的代码写的但是没有出结果,希望有大神看到可以帮忙解答一下。 ps:本人是python初学小透明,如果犯了低级错误希望大家不要介意,谢谢 【代码如下】 import requests import re def gerHTMLText(url): try: r = requests,get(url) r.raise_for_status() r.encoding = 'utf-8' r.headers = 'Mozilla10' return r.text except: print("杩炴帴澶辫触") def parsePage(ilt, html): try: plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) for i in range(len(plt)): price = eval(plt[i].split(':')[1]) tltle = eval(tlt[i].split(':')[1]) ilt.append([price, title]) except: print("") def printGoodsList(ilt): tplt = "{:4}\t{:8}\t{:16}" print(tplt.format("搴忓彿", "浠锋牸", "鍟嗗搧鍚嶇О")) count = 0 for g in ilt: count = count + 1 print(tplt.format(count, g[0], g[1])) def main(): goods = '涔﹀寘' depth = 2 start_url = 'https://s.taobao.com/search?q=' + goods infoList = [] for i in range(depth): try: url = start_url + '&s=' + str(44*i) html = getHTMLText(url) parsePage(infoList, html) except: continue printGoodsList(infoList) main()
关于python网络爬虫进行深度搜索出现的问题
小弟在做网络爬虫程序抓取指定网页的图片,有个要求就是用户可以输入指定的爬虫深度,然后爬虫程序需达到指定深度。小弟在写的时候,程序只能处理深度为1或者深度为2的请求,我仔细看了看是我的广度优先搜索写的和深度优先搜索混合了,但不知道怎么改。请求大佬们指出问题来。下面是我的代码块: ``` def get_href_in_depth(url_website,depth):**#url_website是请求爬虫的网站,depth为深度 root_website=url_website execute_list=[url_website] **#把每次执行的网页链接加到这个list里边,最开始就是请求的爬虫网站** for i in range(int(depth)): ** #因为输入的是deepth=input("Please specify the deep you want to reach: "),需转换为integer** for i in range(int(depth)): for t in execute_list: absolute_href_list=absolute_href(t) **#该方法会返回 t链接下所有的网页链接** max_times_number=standard_length(absolute_href_list)**#该方法返回 absolute_href_list长度的众数** for k in absolute_href_list: if len(k.split('/'))==max_times_number and len(k.split('/'))>len(root_website.split('/'))+i :**#因为链接中有'back'会回到深度-1的页面,所以根据此排除会回到之前网页的链接** os.chdir(os.path.split(os.path.realpath(__file__))[0])#在程序所在文件夹执行 mak_dir_html_saveimage(k)#该方法为根据网站保存目录并保存该网站下的所有图片比如http://www.feimax.com/images文件夹应该为www.feimax.com和在其目录下的images并保存相应网站的图片 else: absolute_href_list.remove(k)#移除回到之前网站的链接 execute_list=absolute_href_list ``` 请求大佬指出问题
python 爬虫问题,对于验证码输入之后才能进行搜索
![就是这种类型的](https://img-ask.csdn.net/upload/201605/11/1462929717_513259.png) ![图片说明](https://img-ask.csdn.net/upload/201605/11/1462929867_394011.png) 在页面上手动输入验证码之后,搜索结果会出来,但验证码图片改变。 爬虫的时候,我获取了验证码,但是用这个验证码去爬虫显示验证码总是错误。
python爬虫遇到ajax页数访问限制
## 在爬取雪球网评论时遇到了一个问题,我们可以访问的页数是100页,但是这个网站存储的评论信息并不止100页的内容,我们想要获取更多页数的评论时遇到了问题 ### 具体问题就是如下: ``` { "error_description": "请求页数超过限制", "error_uri": "/statuses/search.json", "error_code": "21306" } ``` ### 会以上错误,我根据报错的信息查询了一下,发现是属于“OAuth参数被拒绝”的问题,根据很多论坛上搜索到的问题,发现并没有得到解决。 ## 希望技术大佬能够帮忙解决一下。谢谢!
python爬虫:为什么用requests可以爬到数据,用scrapy爬到数据为空?
"http://detail.zol.com.cn/index.php?c=SearchList&keyword=%C8%FD%D0%C7&page=1" 用requests可以爬到数据,scrapy爬的状态码是200,但响应没有数据,什么原因?
网络爬虫无法翻页的问题?
最近我在用Python写网络爬虫,尝试爬取印度外交部的网站。爬虫模拟在搜索框内输入关键词, 然后获取搜索结果。有两个问题让我很头疼:一是在点击搜索后会发现网站同时使用了get和post方法向服务器发起请求,但是翻页后只剩post方法,我在代码中只使用post方法,也能成功获取到第一页的内容;二是网络爬虫只能获取第一页和第二页的内容,再往后翻页就是第二页内容的重复,这个问题一直没有解决。 希望有兴趣的朋友能够解答我的疑问,如果需要更多信息也请提出,感谢!
爬虫爬取1688返回response成功但是内容为空?
今天尝试写了一个爬取1688商品页的爬虫,发现1688的代码已经不同于几年前了,前台的页面html代码居然是通过js请求返回json数据中的值解析而来,整个动态加载的html被全部封装。在网页前台浏览的时候也能明显感觉到,整个商品页不是全部一次加载完成,随着鼠标的下滑进行动态加载,直至翻页出现。找了一下网上的爬取代码,不是代码太旧就是使用selenium,因此我尝试从解析js角度来看看能否爬到数据。 我搜索的关键词为:大理石餐盘,访问的url为:https://s.1688.com/selloffer/offer_search.htm?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&n=y&netType=1%2C11&spm=a260k.635.3262836.d102 通过抓包可以发现实际上每个页面的动态加载通过如下的js文件加载: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530583_824631.png) 同时可以看到头部信息为: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530839_105546.jpg) 因此我编写了代码来请求此url,想要获取其中的数据 通过分析url,我发现其实只有几个关键的参数在发生作用,我修改了url如下: https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true 将比较关键的参数罗列:keywords,beginpage ,startindex(本页中以0.20.40循环),templateconfigname,async,enableasync 从页面请求的结果如下 https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552531339_315690.jpg) 依据上面的分析我编写了代码: ``` ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true' } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` ``` 其中请求头是参照抓包的请求头进行了伪装,user_agent使用了随机代理池中的代理。 ip应用了代理池中的代理进行切换, 测试代码发现虽然返回成功,但是内容为空: 测试代码的结果如下: ``` ``` 正在爬取第1页_ ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":"" }, "beaconP4Pid":"1552531611011186199615", "tracerId":"1191031861991552531610953000954", "end":0 } }) ``` 很明显服务器判断出来我是机器人,我检查了一下cookies还有ip以及header都没有问题 使用同样的参数在浏览器页面请求也能访问正常的结果,因此我决定增加更多的参数,也许是因为服务器 端验证会检测某个参数是否存在来判断请求来自机器人还是真正的用户,我将代码修改如下: ``` def get_one_page(page): ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true', 'rpcflag': 'new', '_pageName_': 'market', 'offset': str(9), 'pageSize': str(60), 'asyncCount': str(20), 'n': 'y', 'netType': '1%2C11', 'uniqfield': 'pic_tag_id', 'qrwRedirectEnabled': 'false', 'filterP4pIds': '550656542618%2C554434844511%2C574540124248%2C568185683625%2C567623615791%2C536778930216%2C577066747130%2C555894336804', 'leftP4PIds': '', 'pageOffset': str(3) } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` 测试的结果如下: ``` 正在爬取第1页 ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":" \n \n <!-- 为打点计算 offerindex 值-->\n \n \n <!-- 用于异步请求 -->\n \n\n <div id=\"sm-maindata-script\">\n <script type=\"text\/javascript\">\n var coaseParam = {\n \'isCoaseOut\':true\n };\n <\/script>\n <script type=\"text\/javascript\">\n var rightP4P = {\n industryTagPath:\'\',\n leftP4PId:\'\',\n leftP4PLoginId:\'\',\n biaowangId:\'\'\n };\n var rightP4Poffer =[\n ];\n<\/script>\n <\/div>\n \n\n" }, "beaconP4Pid":"1552532048109186199394", "tracerId":"1191031861991552532048084000548", "end":0 } }) ``` 很遗憾结果并不理想,仍旧没有办法获得真正的数据。 我分析了还没有被我列进去的参数,因为无法寻找到其规律所以就没有加上去。 难道1688现在已经做到了,机器人无法爬的地步了吗,到底应该如何解决呢。有没有大神能够指点一下: 另外我同样的测试了一下1688的热销市场,同样的方式,没有问题可以爬取到js的内容,只不过数据是直接封装在json返回值中的,不是通过html代码二次封装。
Python爬虫,用scrapy框架和scrapy-splash爬豆瓣读书设置代理不起作用,有没有大神帮忙看一下,谢谢
用scrapy框架和scrapy-splash爬豆瓣读书设置代理不起作用,代理设置后还是提示需要登录。 settings内的FirstSplash.middlewares.FirstsplashSpiderMiddleware':823和FirstsplashSpiderMiddleware里面的 request.meta['splash']['args']['proxy'] = "'http://112.87.69.226:9999"是从网上搜的,代理ip是从【西刺免费代理IP】这个网站随便找的一个,scrapy crawl Doubanbook打印出来的text 内容是需要登录。有没有大神帮忙看看,感谢!运行结果: ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556181491_319319.jpg) <br>spider代码: ``` name = 'doubanBook' category = '' def start_requests(self): serachBook = ['python','scala','spark'] for x in serachBook: self.category = x start_urls = ['https://book.douban.com/subject_search', ] url=start_urls[0]+"?search_text="+x self.log("开始爬取:"+url) yield SplashRequest(url,self.parse_pre) def parse_pre(self, response): print(response.text) ``` 中间件代理配置: ``` class FirstsplashSpiderMiddleware(object): def process_request(self, request, spider): print("进入代理") print(request.meta['splash']['args']['proxy']) request.meta['splash']['args']['proxy'] = "'http://112.87.69.226:9999" print(request.meta['splash']['args']['proxy']) ``` settings配置: ``` BOT_NAME = 'FirstSplash' SPIDER_MODULES = ['FirstSplash.spiders'] NEWSPIDER_MODULE = 'FirstSplash.spiders' ROBOTSTXT_OBEY = False #docker+scrapy-splash配置 FEED_EXPORT_ENCODING='utf-8' #doucer服务地址 SPLASH_URL = 'http://127.0.0.1:8050' # 去重过滤器 DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter' # 使用Splash的Http缓存 HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage' #此处配置改为splash自带配置 SPIDER_MIDDLEWARES = { 'scrapy_splash.SplashDeduplicateArgsMiddleware': 100, } #下载器中间件改为splash自带配置 DOWNLOADER_MIDDLEWARES = { 'scrapy_splash.SplashCookiesMiddleware': 723, 'scrapy_splash.SplashMiddleware': 725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810, 'FirstSplash.middlewares.FirstsplashSpiderMiddleware':823, } # 模拟浏览器请求头 DEFAULT_REQUEST_HEADERS = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', } ```
python爬虫 mysql数据库提示IntegrityError: (1062, "Duplicate entry
背景:python scrapy框架,mysql(workbench数据库),不同的url设置为主键 根据报错内容,在数据库搜索重复的主键信息,数据库里并没有相关数据,重试,仍提示主键重复 请问这个是什么地方的问题?
完成了爬虫,入库功能,接下来如何建站?
已经完成了爬虫功能,以及爬取的数据存入数据库。然后想建个网站,实现搜索功能,并界面显示数据内容。请问各位,前端要怎么做?用哪些框架?我是在Ubuntu16.04里,用Pycharm,Python3爬虫,和MySQL。求帮忙啦。
爬虫爬取网站遭遇openresty301重新定向如何解决?
利用get方法会弹出重新定向超过三十个的错误 然后加入 allow_redirects=False 返回如下 ``` <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>openresty</center> </body> </html> ``` 并没有任何没有链接... 然后查了一下这个openresty 一个高并发服务器 然后就没有然后了 当然浏览器是正常显示的 网站是个discuz论坛 该怎做才能爬这个网站...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 数组类型 泛型约束 c#的赛狗日程序 c# 传递数组 可变参数 c# 生成存储过程 c# list 补集 c#获得所有窗体 c# 当前秒数转成年月日 c#中的枚举 c# 计算校验和 连续随机数不重复c#
立即提问